web-dev-qa-db-ja.com

非常に高いCPU使用率で実行されているJenkins

私は最近、Jenkins 1.6から2.5にアップグレードしました。これを実行した後、CPU使用率が非常に高く、時には300%を超えることに気付きました(コアが4つしかないため、400%を超えることはないと思います)。これのデバッグを開始する場所がわかりません ただし、ここにはスレッドダンプがあります およびtop/htopのスクリーンショット

htophtop

top:top

14
Matt Korostoff

判明したように、私の問題は、いくつかのジョブに何千もの古いビルドがあったことです。これはJenkins 1.6では問題ありませんでしたが、2.5では問題です(ジョブの概要ページを表示すると、Jenkinsがすべてのビルドをメモリにロードしようとする可能性があります)。それを修正するために、問題のあるジョブから古いビルドのほとんどを削除しました この戦略を使用して し、ジェンキンをリロードしました。魅力のように働いた!

また、「古いビルドを破棄」プラグインを設定して、最新の50個のビルドのみを保持し、これが再び発生しないようにします。

16
Matt Korostoff

リクエストが到着するたびに、Jenkinsはリクエストを処理するためにいくつかのスレッドを生成します。 Jenkinsをアップグレードした後、その時点で高スロットルで起動した可能性があります。次のシナリオで、JenkinsサーバーのCPUとメモリの使用量を確認してください。

  • Jenkinsはアイドル状態で、他のアプリはサーバー上で実行されていません。
  • ビルドをスケジュールしましたが、他のアプリはサーバー上で実行されていません。

そして、Jenkinsまたは他のアプリと並行してJenkinsを実行することが本当に問題を起こしているかどうかを判断するのに役立つ動作を比較します。

@vlpが言ったように、Jstad構成でJVisualVMを介してjenkinsアプリケーションを監視して、フックします。JstadでJvisualVMを構成するには、この link を参照してください。

3
S.K. Venkat

Windows 7 UltimateにJenkinsをインストールすると、CPU使用率が異常になる2つの理由に気付きました。

  1. 最近、v2.138からv2.140にアップグレードし、いくつかのプラグインを追加しました。ジョブがトリガーされるたびにJenkins Java実行可能ファイルがCPU時間の最大60%を占めるという問題に気付き始めました。外部サーバーからデータを取得するだけで、ジョブはCPUにバインドされませんでした。 Jenkinsサービスを簡単に再起動することで修正されたため、アップグレードが正常に終了しなかったと思われます。

  2. Java Garbage Collectionは、デフォルトのメモリ設定で実行するとエラーをスローし、CPUを占有していました。おそらくやり過ぎだったかもしれませんが、JenkinsのJavaヒープスペースをデフォルトの256mbから4GBに増やしました;この問題を解決しました。

    手順については、このソリューションを参照してください。 https://stackoverflow.com/a/8122566/4479786

1
verayth

2.5は開発リリースのようで、1.6は長期サポートバージョンです。したがって、最新のEdgeバージョンを使用する場合は、ある程度のリグレッションが予想されるはずです。この質問の恩恵は、他のユーザーもこれを経験している証拠です。解決策は、Jenkinsバグトラッカーでバグを報告することです。今のところ、既知の正常なバージョンに一時的にダウングレードできます。

1
hkBst