Artifactoryのパフォ,マンスチュ,ニング方法

JFrog Artifactory

Artifactoryの使用量が増えると使用できるリソースが徐々に減るため,パフォーマンスの低下につながります。使用量が増えた際には,システムの状況と履歴情報を監視することがより重要になります。Artifactoryを最適化し、安定性を確保するには使用パターンの監視が欠かせない重要な最初のステップです。ここでは、Artifactoryと周囲の環境監視と調整のためのガイドラインとヒントをいくつか紹介します。まず、Apache Tomcat、HTTPコネクション、データベース、Java仮想マシン(JVM)およびストレージなど監視や調整が必要になる重要なリソースについて説明します。

Apache Tomcat

Artifactoryは,Apache HTTPクラアントを使用するTomcat上で動作します。Tomcatはスレッドプールから割り当てリクエストを処理します。スレッドプールが使い果たされると、Tomcatは追加リクエストを処理するため、さらにmaxThreads属性で指定された最大数まで作成します。リクエスト数がmaxThreads値を超えると,リクエストはacceptCount属性で指定された最大数までキュ,に入ります。このパラメータが大きすぎると,スレッドが空くのを待機しているリクエストは処理できるようになるまで処理待ちとなり,遅延が発生することになります。さらにacceptCount制限にも達すると,Tomcatは必要なリソースが最終的に解放されるまで,追加リクエストに対して接続拒否エラーを返します。その結果,スレッドを取得できなかった新しいリクエスト,アップロード,ダウンロード,更新などは失敗します。このようなパフォーマンスの低下やエラーを回避するため,Tomcatのserver.xmlファイルで属性の値を増やすことができます。maxThreadsのデフォルト値は200で,acceptCountは100に設定されています。以下のサンプルのserver.xmlファaapl .xmlルでは,これらの値が増えていることに注目してください。

<连接器端口="8081" acceptCount="200" compression="off" connectionLinger="-1" connectionTimeout="60000" maxThreads="600" acceptorThreadCount="2" enableLookups="false"/>

モニタリング

Netstat:監視ツールが設定されていない場合は,下記のnetstatコマンド(TOMCAT_PORT変数はArtifactoryのTomcatポートに置き換えてください)を実行することで,HTTPコネクションの使用状況を簡単に監視できます。

睡觉时5;$(日期)HTTP连接:$(netstat -latuen | grepTOMCAT_PORT| wc -l)";回声;完成

カウントしたいステ,トを指定することもできます。たとえば,次のコマンドを実行して建立ステートをカウントすることができます(TOMCAT_PORT変数はをArtifactoryのTomcatポートに置き換えてください)。

睡觉时5;$(日期)HTTP连接:$(netstat -latuen | grepTOMCAT_PORT|grep建立| wc -l)";回声;完成

HTTPコネクション用のMBean4.12:バージョン以降,ArtifactoryはHTTPコネクション用のMBeanを公開して使用状況を追跡できるようにしました。このMBeanは以下の各リポジトリにあります。

org.jfrog.artifactory > Artifactory | HTTPConnectionPool > [Repo Name]:属性

詳細にいては,ArtifactoryとMBeanのンテグレションに関するブログの投稿を参照ください。

サ,ドパ,ティ製,,ル:サドパティ製ルを使って,httpコネクション等のさまざまなリソスを監視できます。JFrogの知识库には,JConsoleJavaMelodyNagiosなどの説明があります。ArtifactoryDockerコンテナ用にも、HTTPコネクションやJVMの使用状況等を監視するオプンソスのルがあります。

下のグラフはLogicMonitorというツールで生成されたものです。この例では,Tomcatで使用可能なスレッドの最大数に達したため,Tomcatのserver.xmlファイルでmaxThreads属性を増やす必要があることを示しています。

监视线程- JFrog Artifactory

Artifactory用のHTTPコネクション

リポジトリごとに許可されるhttpコネクション数はデフォルトで50に設定されています。使用されるコネクション数が常にこの値に近い場合は,以下のパラメ,タ,を使用して増加できます。

美元ARTIFACTORY_HOME / etc / artifactory.system.properties

client.max.total.connections = {value}

s3を使用している場合のhttpコネクション

ファイルストアの管理にS3对象存储を使用している場合,ArtifactoryのS3バイナリプロバイダはJets3tライブラリを使用してデフォルトで許可される最大同時コネクション数を100に設定しています。S3オブジェクトストアへのコネクションが集中した場合,JetS3tコネクションプールからの接続を待っている間にリクエストがフリーズする可能性があります。これを回避するには,ARTIFACTORY_HOME / etc /美元binarystore.xmlファイルにS3バイナリプロバイダーのhttpclient.max-connectionsプロパティを追加してください。以下のコドスニペットは,設定方法を示すArtifactoryユザガドからのサンプルCleversafeテンプレ,トです。

   XXXXXXXXX XXXXXXXX [My CleverSafe Server] [My CleverSafe Bucket]  < httponly >false    .

Tomcatのチュニングにいて詳細を知りたい場合は,Netflixのブログ”为高吞吐量、快速故障系统调优Tomcatが参考となります。

リバスプロキシのhttpコネクション

Artifactoryの前でリバースプロキシを使用している場合,HTTPコネクションの数が最大値に達してArtifactoryに到達できないことがあります。このような場合は,より多くのコネクションをリバ,スプロキシに割り当ててください。詳細な手順はリバ,スプロキシサ,バ,のマニュアルを参照してください。nginxのパフォ,マンスチュ,ニングApacheのパフォ,マンスチュ,ニングを参照できます。同様にApacheドキュメントのApache HTTPDリバ,スプロキシも参照してください。

デ,タベ,ス

データベース接続数は,Artifactoryを最適化するときに監視すべきもう1つの重要なリソースです。管理者は,利用可能なデ,タベ,ス接続数に余裕があることを確認してください。そうしないと,空き接続を待っているリクエストがフリ,ズする可能性があります。利用可能なデータベース接続数は,現在の使用状況に基づいて調整する必要がありますが,この値はデータベースに設定した最大接続数を超えないようにしてください。

モニタリング

ArtifactoryはDB接続用のMBeanも公開していますので,jmx準拠のルを使用して監視できます。JConsoleを使用している場合は,このMBeanはorg.jfrog。artifactory > artifactory >存储:数据源にあります。他にもデタベス接続を監視できる多くのルがあります。たとえば以下のグラフは,rdsデ,タベ,スのawsモニタリングルによって記録されたデ,タベ,ス使用率が急上昇している状況を示しています。

监控数据库连接- JFrog Artifactory

ここでNetstatを使ってアクティブなDB接続を監視することもできます(DB_PORT変数をArtifactoryデータベースのポート番号に置き換えてください)。

睡觉时5;$(date)数据库连接:$(netstat -latuen | grepDB_PORT| wc -l)";回声;完成

カウントしたいステ,トを指定することもできます。たとえば,次のコマンドを実行して听ステートをカウントすることができます(DB_PORT変数はArtifactoryデータベースのポート番号に置き換えてください)。

睡觉时5;$(date)数据库连接:$(netstat -latuen | grepDB_PORT|grep听| wc -l)";回声;完成

デ,タベ,ス接続が常に最大値に近い場合は増やす必要があります。アクティブなデータベース接続数が最大値に達しているのに,さらにデータベース接続が要求されると,Artifactoryサーバーログ(美元ARTIFACTORY_HOME /日志/ artifactory.log)から次の例外が発生します。

无法为事务打开JDBC连接;嵌套异常是org.apache.tomcat.jdbc.pool. poolexhaust - stedexception: [art-exec-672866]超时:池是空的。无法在120秒内获取连接,没有可用连接[大小:100;忙:100;空闲状态:0;lastwait: 120000)。

また,アpool.max.idle)に配置されるのを待機するデータベース接続数が増加するため,パフォーマンスが低下することもあります。スレッドダンプを実行して,

org.apache.tomcat.jdbc.pool.ConnectionPool.returnConnectionにパ,クされているスレッドの数を確認してください。

チュ,ニング

Artifactoryの場合:Artifactoryのデ,タベ,ス接続は,美元ARTIFACTORY_HOME / etc / db.propertiesファルにある以下のパラメタを設定してください。

  • pool.max.active:同時に接続可能な最大デ,タベ,ス接続数(デフォルトは100)
  • pool.max.idle: Artifactoryが保持するア.ドル状態の最大デ.タベ.ス接続数(デフォルトは10)

デ,タベ,スの場合:使用しているデ,タベ,スの資料を参照して,デ,タベ,ス自体の接続数を増やしてください。デ,タベ,スのパフォーマンスに関しては、データベース接続の監視と変更だけでなく他にも設定があります。例えばMySQLのマニュアルフにはmy . cnf中所做ァイルを最適に設定してパフォーマンスチューニングが可能であることが記載されています。PostgreSQLの場合,PostgreSQLのwikimax_connectionsの値を増やす方法にいての詳細を参照できます。

jvmメモリ

Artifactoryを最適化するときはメモリも考慮する必要があります。Artifactoryに割り当てられたメモリが少ないと動作が遅くなったり、応答が遅くなったり、最悪の場合はArtifactoryがまったく応答しなくなるなど問題が発生します。ArtifactoryのJVM設定を変更して最適化を行ってください。

モニタリング

JVM使用量の履歴データを監視するときは,初期ヒープサイズ(Xms)を最大ヒープサイズ(Xmx)より小さくすることが重要です。そうしないと,グラフで使用パタ,ンを確認するのが難しくなります。

监控JVM使用情况- JFrog Artifactory

前節で説明したツール(JConsole, JVisualVM Javamelodyなど)でもJVMの使用状況を監視できます。

チュ,ニング

ユザ数やレポトサズはメモリ使用量とパフォマンスに直接影響します。Artifactoryを最適化する際には、Artifactoryユーザーガイドにある推奨ハ,ドウェアのガ▪▪ドラ▪▪ンを参照してください。jvmのメモリ割り当てを変更するためにjvmパラメタを設定する場合には,Linux, Solaris, Macまたは窗户にそれぞれ対応する指示に従ってください。

ストレ,ジ

ストレ,ジ不足はパフォ,マンスと安定性に影響を与えるため,監視が不可欠なリソ,スです。

モニタリング

ディスクi / o率:ディスクI / O率が遅いと著しいパフォーマンス低下を引き起こす場合がありますが,さまざまなツールで監視できます。以下の例では,iostatを使用してi / o率を監視しています。Artifactoryインスタンスのインストールや設定を行う前にこのテストを実行してください。デバイス情報ページのみ表示する場合には-dフラグを追加し、詳細情報(個別の読み取り/書き込み)も表示する場合には-xを追加します。連続出力の場合は1を加算します。出力サンプルは以下の通りです。

$ iostat -dx 1设备:rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util xvdb 0.00 0.00 649.00 0.00 55808.00 0.00 171.98 8.13 12.44 12.44 0.00 1.54 100.00

ディスク容量:Artifactoryはストレジ監視用のMBeanを公開しました. org.jfrog。artifactory> artifactory>存储で確認できます。エンタープライズ版の場合は,JFrog任务控制にある中央のダッシュボードからすべてのグローバルArtifactoryインスタンスのストレージを1か所で監視できます。任务控制を使用してストレジの使用量を追跡する方法にいては,こらのブログ記事で詳しく説明してあります。

チュ,ニング

S3, NFSなど既存のファイルストアが遅く,より高速で小さいローカルファイルストア(SSDなど)がある場合は,Artifactoryのcache-fsコマンドを使います。Cachefsはファイルシステムのように機能しますが,アップロードおよびダウンロードリクエスト用のバイナリLRU(最近最少使用)キャッシュも持っています。Cachefsを有効にすると,高いIOPS (I / O操作)やNFSアクセスが遅いインスタンスのパフォーマンスが大幅に向上します。詳細は,Artifactoryユ,ザガ,ドの缓存文件系统二进制提供程序を参照してください。

ディスクの空き容量が不足している場合は,現在のファ。非常にスケラブルなクラウドストレジプロバダ(S3GCSまたはAzure)を使用してください。また,ArtifactoryのFilestore分片機能を使用してストレ,ジを追加することもできます。この場合,安定した信頼性の高いスケーラブルなファイルストアを実現するため冗長化の有無をセットアップ時に選択できます。Artifactoryのディスクスペス使用方法に関してはユザガドをご覧ください。

利用される環境に依存するケースが多いため,Artifactoryの最適化は一度でうまくいくとは限りません。設定をモニタリングすることにより,Artifactoryインスタンスが最適なパフォーマンスを出すようにシステムと設定をお使いの環境や方法に合わせ適切に調整していくことが可能です。また,チュ,ニングの参考になるようストレステストを実行してください。同時アップロ,ドとダウンロ,ドのロ,ドテストには,人工查询语言(AQL)JFrog CLIを使用します。マルチスレッドのアップロードとダウンロードをテストするには,CLIの——线程オプションを使用してください。