2017-04-03 6 views
1

Jenkinsサーバーに約50台のスレーブが接続されています。 私はJenkins Build Queueでいくつかのストレステストをしようとしています。なぜなら、Jenkins Build Queueに関するドキュメンテーションが見つかりませんでした。Jenkinsビルドキューに15Kのタスクを追加する

私は、1つのステップで簡単なパラメータ化されたジョブを持っていますが、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 

このジョブを15,000回実行します。

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を使用しようとしました。

私の2回目の試みは、システムのGroovyスクリプトを使用して 'job.scheduleBuild' APIを呼び出すことによって、この 'TEST_SIMPLE'ジョブをトリガーする別のジョブを使用することでした。現在1.5時間稼働しており、15Kのうち8Kのタスクしか提出していません。

スレーブがキュー

この取り組みの目的は、多くの多くのテストが含まれている私たちのテストスイートのための非常に古いエグゼキュータ/ディスパッチャを交換することである(から1を取るときにのみタスクがキューに追加されているようです〜15K)、私はJenkinsとPOCをやっています。私たちが既にビルドに使用していて、この古いエグゼクティブを実行しているからです。

私の質問は次のとおりです。 1.ビルドキューのサイズに制限はありますか? 2.非常に多くのリクエストを非常に早く提出する方法はありますか?

ありがとうございました。

答えて

0

私はあなたのポストを理解していれば、正しく、あなたは知っているしたいと思います:

  1. は、ビルドキューに制限はありますか?
  2. ジェンキンスへのリクエストを非常に早く提出するにはどうすればよいですか?

最初に2番目の質問にお答えします。要求をより速く送信するには、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から始まり、それを押しますが、それは私だけです。

キューの限界までは、メモリとディスクによって制限されていますが、他の制約があるかどうかを調べるにはソースを掘り下げる必要があります。

関連する問題