この記事はWeChatの公開アカウント「Ask Qi」から転載したもので、著者はChen Shaowenです。記事を転載する場合は公式アカウントまでご連絡ください。 1. より大きな-Xms -Xmxパラメータを設定するJenkins は Java で書かれたオーケストレーション エンジンであり、Full GC 中に Stop The World (STW) を実行します。大規模ビルドでは、STW により Jenkins が新しいリクエストを処理できなくなる可能性があります。 頻繁な STW を回避し、同時実行性を高めるには、より大きなヒープ (-Xms3g -Xmx6g -XX:MaxRAM=6g) を設定することをお勧めします。監視値に応じて具体的な値を設定できます。 Java Full GC 後、メモリ使用量は大幅に減少します。 2. リクエスト値を小さくしすぎないリクエストが小さすぎると、Jenkins の実行後にノード リソースが不足し、ノードの削除やクラッシュが発生する可能性があります。 リクエストは実際の値に近いはずです。十分なマシン リソースがある場合は、Jenkins が可能な限り別のマシンで実行できるようにアフィニティを構成する必要があります。要求 >= 1.25 * JVM 最大ヒープ メモリ、制限 >= 2 * JVM 最大ヒープ メモリ。 3. IOパフォーマンスは悪くないJenkins はディスク ファイルを使用してデータを保存します。各パイプラインと各ビルドはファイル ディレクトリを占有し、多数のファイルを生成します。通常、パイプラインの数は限られていますが、ビルド履歴が 10,000 を超えるレベルに達すると、Jenkins に対する IO の影響が感じられるようになるでしょう。 ローカルストレージを使用する場合は、高性能 SSD をお勧めします。ネットワーク ストレージを使用する場合は、高性能なネットワーク サポートが必要であり、クライアントのキャッシュ プールを増やす必要があります。 4. jenkins_home のディスク容量を増やすディスクがいっぱいになると、Jenkins は動作しなくなり、Jenkins のバックグラウンドにエラー メッセージが表示されます。 Jenkins の作業ディレクトリのディスク使用量を監視し、アラーム ルールを構成することをお勧めします。監視アラームシステムがない場合は、/var/jenkins_home ディレクトリに、より大きなディスク領域を直接設定することをお勧めします。一部のストレージ クラスは動的拡張をサポートしていないため、ディスクがいっぱいになった場合は手動でのみコピーできます。 5. Kubernetesプラグインを使用してKubernetes上に構築する物理マシンと仮想マシンに基づく構築では、運用および保守コストが増加し、同時実行数が制限されます。 Kubernetes プラグインを使用して Kubernetes 上に構築することで、拡張性や保守性が容易なクラウドネイティブの利点を最大限に活用し、大規模な構築を行うことができます。参考: Kubernetes 上で Jenkins スレーブを動的に作成する、https://www.chenshaowen.com/blog/creating-jenkins-slave-dynamically-on-kubernetes.html)。ビルドには多くのリソースが消費されるため、クラスターへの影響を回避するために、ビルド Pod を指定されたノードに集中させて実行するようにアフィニティを設定できます。 6. CasCを使用してJenkinsの設定を管理するJenkins ページを通じてさまざまなビルド、セキュリティ、その他の構成を実行するのは面倒で保守が難しいだけでなく、再利用もできません。 CasC プラグインを使用すると、ユーザーは Jenkins の構成をテキスト形式で記述し、それを Git リポジトリに配置してバージョン管理を行うことができます。
7. カスタム WAR パッケージャーを使用して Jenkins をパッケージ化する新しい Jenkins 環境をデプロイする場合、多数のプラグインをインストールする必要があり、デプロイ速度に大きく影響します。同時に、プラグインが正常にダウンロードできるかどうかについても不確実性があります。 カスタム WAR パッケージャーを使用すると、ユーザーは Jenkins、構成、プラグインを完全な WAR パッケージまたはイメージにパッケージ化できます。このように、開発やテストでも、オンライン展開でも、非常に便利に展開でき、環境は一貫しており、ユーザーは yaml ファイルを記述するだけで済みます。
8. Jenkins 共有ライブラリGroovy を使用して Pipeline を記述する場合、多くのコードが繰り返されることがよくあります。 Jenkins 共有ライブラリは関数レベルの共有を提供し、同じ関数ロジックのセットを異なるパイプライン間で再利用できるようにします。プラットフォーム構築や大規模な利用シナリオに適しています。パイプラインの書き込みを高速化するだけでなく、メンテナンスやスムーズなアップグレードも容易になります。
9. 参考文献
|
<<: 大手メーカーの分散ID設計ソリューションをいくつかご紹介します
>>: 分散型グローバル一意 ID スキームはそんなにたくさんあるのでしょうか?
faconhost は、米国ロサンゼルスのデータセンターに VPS/クラウド サーバー事業を追加しま...
記事の本文に入る前に、この文章を見てみましょう。「1994年に中国で最初の国際インターネット輸出が登...
Office 365 は、完全に人工知能ベースの生産性向上プラットフォームとして、Microsoft...
8月26日、第1回Alibaba 3D AIチャレンジが終了しました。アリババがオープンソース化した...
Liziqiは「消去」されています。 7月14日、李子奇は主要プラットフォームでビデオ「米、油、塩、...
今日の急速な経済発展により、あらゆる分野で競争が激化しています。企業にとってのあらゆるビジネスチャン...
翻訳者 |ジン・ヤンレビュー |チョンロウ組織にはさまざまなクラウド展開オプションがあり、それぞれに...
以下の内容には写真と証拠があります。注釈付きの説明文を除いて、写真に他の改変はありません。私は自分の...
このタイトルを見ると、間違いなく「クリックベイト」タイトルだと思うでしょうが、それは問題ではありませ...
2020 年はビジネスを行う上で困難な年であり、企業が短期的な課題と長期的な戦略計画のバランスを取る...
Sina Weibo 幹部チーム (写真提供: Tencent Technology)テンセントテク...
GA を使用して Web サイトを分析することは、金鉱を掘るようなものです。 GA の操作に慣れてい...
従業員が内部情報を暴露:共同購入ウェブサイトは、商人が消費者を引き付けるために偽の注文を許しているI...
私はウェブマスターになってから1年が経ちました。この間、私はタオバオをやっていました。ビジネスが良か...
WeChat マーケティングはますます人気が高まっており、オフラインのビジネスでも試さずにはいられま...