2016-10-05 10 views
1

EBS 디스크 대신 EFS (AWS NFS 구현)를 사용하도록 Jenkins 빌드 서버를 재구성하여 성능을 크게 향상시킬 수 있는지 궁금합니다.EBS에서 EFS 저장소로 전환하여 빌드 서버의 성능을 향상시킬 수 있습니까?

EFS는 기가 바이트 당 약 3 배 더 비싸지 만 실제 비용은 EFS에서 사용 된 공간에 대해서만 지불하므로 EFS는 모든 비용을 지불하기 때문에 실제 비용은 아마도 약 2 배 더 비쌉니다.

또한 EFS에는 업그레이드를 위해 아무 것도하지 않고도 확장이 가능합니다. EBS 디스크의 크기를 조정하면 가동 중지 시간이 포함 된 시간 소모적 인 작업입니다.

이 질문은 비용과 관련이 없으며 성능을 향상 시켜도 빌드 속도를 20 %까지 향상시킬 수있는 것처럼 보입니다. 저장 비용은 분명히 극복 될 수 있습니다 (나중에 유지 관리가 덜 필요하다는 장점은 말할 것도 없습니다).

+1

EBS의 대기 시간이 더 짧습니다. 건물은 대개 많은 작은 소스 파일을 필요로하므로 EBS에 불만이 있습니다. 왜 그걸 시도하지 않니? – at0mzk

+0

@BretzL 이미 테스트를 수행 한 사람으로부터 데이터를 얻지 않는 한,이를 수행하고 모든 결과를 다시 제공합니다. 이 외에도 jenkins가 빌드 한 도커 이미지를 저장하는 것과 동일한 접근 방식을 평가하고 있습니다. 여전히 NFS에서 도커 데이터를 호스팅하여 별도로 처리 할 수 ​​있습니다. – sorin

+0

"Amazon EBS는 단일 EC2 인스턴스의 데이터에 가장 낮은 대기 시간의 액세스가 필요한 작업 부하에 대해 성능을 제공 할 수 있습니다." EBS를 통한 EFS의 성능 향상을 보지 못할 것이라고 생각합니다. – jbird

답변

1

다음은 AWS EFS를 사용하여 Jenkins 홈 디렉토리 (작업 공간 포함)를 사용하려는 나의 중개 결과입니다.

내 실수는 내가 잘 요약 한이에 대한 숨겨진 페이지를 놓쳤다는 것입니다. EFS에 엄청난 양의 데이터를 저장하고 싶지 않으면, 단지 0.5 %의 버스트를 낼 수 있습니다. 우리 모두 정상적인 성과로 기대할 것입니다.

EFS는 느린 속도 일뿐만 아니라 속도가 너무 느리기 때문에 로컬 EBS 볼륨에서 EFS 볼륨으로 8GB의 데이터 만 rsync하지 못했습니다.

[email protected]:/efs# time rsync -ah --info=progress2 /jenkins/ /efs 
     816.72M 6% 609.02kB/s 0:21:49 (xfr#12490, ir-chk=1009/273305) 
      2.71G 18% 871.55kB/s 0:50:40 (xfr#42955, ir-chk=1070/306870) 

평균 속도는 약 1.5mB/s로 우스 웠습니다.

나는 이것으로 jenkins가 작업 젠킨스를 설치하는지 테스트하지 않기로 결정했습니다.

이것이 내 속도를 제한하는 AWS로 인한 것인지 확인하려고했지만 EFS의 모니터링이 그런 경우는 아니라고합니다. 나는 작은 파일들을 많이 처리해야한다면 얻을 수있는 성능이 이라고 생각한다.. 스크린 샷을보십시오 : enter image description here

4

직접적인 경험에 비추어 볼 때, 이것은 Jenkins 서버의 경우 매우 나쁜 생각입니다. 우리는 EBS 볼륨을 생성, 확장 및 관리하는 데 필요한 관리 및 자동화 비용을 절감하기 위해 Jenkins를 EFS 마운트에 집어 넣었습니다.

젠킨스는 종종 EFS와 실제로 NFS를 구현할 때 최악의 시나리오 인 많은 작은 파일 (예 : Javascript npm 모듈)을 사용합니다. 파일 기반 저장소는 각 파일 액세스에 대해 서버 왕복을 필요로합니다. 특정 경우에는 소규모 프로젝트의 작업 영역을 정리할 때 EFS의 홈 디렉터리가있는 Jenkins 서버에서 몇 분이 걸릴 수 있습니다.

문제를 해결하고 실수로부터 배우십시오. 우리는이 선택을 취소 할 것입니다. Jenkins 서버는 EBS 기반 서버보다 훨씬 느립니다.

+0

문제를 더 잘 설명하지 않겠습니다. :) –