2017-04-03 1 views
1

Jenkins 서버에 약 50 개의 슬레이브가 연결되어 있습니다. Jenkins Build Queue에 대한 문서를 찾을 수 없어 일부 스트레스 테스트를 수행하려고합니다.Jenkins 빌드 큐에 15K 작업 추가

하나의 단계만으로 매개 변수화 된 간단한 작업이 있고, BRANCH 및 COUNT가 작업 매개 변수입니다. 10 초에서 30 초 사이의 임의의 시간 동안 작업 잠함 :

#bash 

RESULT="/path/to/results_dir/$BRANCH/$BUILD_ID.txt" 
SEC=$(shuf -i10-30 -n1) 
sleep $SEC 
echo -e "$NODE_NAME\t$BUILD_TAG\t$SEC\t$COUNT" > $RESULT 

이 작업을 15K 번 실행하고 싶습니다.

for c in $(seq 1 15000); do curl -X POST http://<server ip>:8080/job/TEST_SIMPLE/buildWithParameters --data-urlencode "token=TEST" --data-urlencode "BRANCH=<branch name>" --data-urlencode "COUNT=${c}"; done 

을하지만 시간 이후에만 4K 작업은 제출 된, 그래서 루프를 살해하고 젠킨스는 큐를 구축 제거 : 은 처음에는 명령 줄에서 젠킨스 REST API를 사용했습니다.

두 번째 시도는 system groovy 스크립트를 사용하고 'job.scheduleBuild'API를 호출하여이 'TEST_SIMPLE'작업을 트리거하는 다른 작업을 사용하는 것입니다. 현재 1.5 시간 동안 실행 중이며 15K에서 8K 개의 작업 만 제출했습니다.

노예가 큐

이러한 노력의 목적은 많은 많은 테스트를 포함하는 우리의 테스트 스위트에 대한 아주 오래된 집행자/디스패처를 대체하는 것입니다 (하나를 소요하는 경우에만 작업이 대기열에 추가 된 것으로 보인다 ~ 15K) Jenkins와 POC를하고 있습니다. 이미 Jenkins를 빌드에 사용하고 있으며이 오래된 집행자를 돌리고 있기 때문입니다.

제 궁금한 사항은 입니다. 1. 빌드 대기열의 크기에는 제한이 있습니까? 2. 이렇게 많은 요청을 매우 빠르게 제출할 수있는 방법이 있습니까?

감사합니다. 내가 제대로 귀하의 게시물을 이해한다면

답변

0

당신은 알고 싶습니다 : 빌드 큐에 한계가

  1. 있습니까?
  2. Jenkins에 대한 요청을 매우 빠르게 제출하려면 어떻게해야합니까?

먼저 두 번째 질문에 대답하겠습니다. 요청을 더 빨리 제출하려면 xargscurl을 병행 사용하십시오. 이렇게하면 복수 스레드를 사용하여 curl 요청을 제출할 수 있습니다.

seq 1 20 | xargs -n 1 -P 10 -I cnt curl -X POST http://<server ip>:8080/job/TEST_SIMPLE/buildWithParameters --data-urlencode "token=TEST" --data-urlencode "BRANCH=<branch name>" --data-urlencode "COUNT=cnt" 

xargs -n 1 -P 10 -I cnt 명령 병렬 변수 이름 'CNT'(-I cnt) (-P 10 10 스레드)를 사용 curl 할 시간 (-n 1)에서 인수를 전달한다.

로드를 생성하는 데 사용하는 시스템의 프로세서 수에 따라 매우 많은 수의 스레드를 사용할 수 있습니다. 스레드가 프로세서와 경쟁하면로드가 너무 높아져로드를 생성 할 수 없습니다. 대부분의 최신 랩톱에서 나는 팬이 제트 엔진처럼 들릴 때까지 50에서 시작하여 밀어 넣을 것입니다.

큐 제한은 확실히 메모리와 디스크로 제한됩니다.하지만 다른 제약 조건이 있는지 보려면 소스를 파헤쳐 야합니다.