Test disk access speed for a Java application
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
問題
アトラシアンのサーバー アプリケーションでパフォーマンスの問題が発生しているように見受けられ、実行速度が遅い。これらのアプリケーションには、Jira、Confluence、Bamboo、および Fisheye/Crucible などの Java ベースのソフトウェアが含まれる。
たとえば Jira の場合、次の領域で明らかに問題が発生します。
- 再インデックス
- 検索
- 課題ナビゲーター
- ガジェット
- 課題のオープン
- Adding/Accessing Attachments
Bitbucket Data Center を実行している場合、ディスク ベンチマークの詳細については以下の記事を参照してください。
Testing NFS disk access speed for Bitbucket Data Center and git operations
診断
アトラシアン アプリケーションのパフォーマンスにはディスク アクセス速度が重要です。
アプリケーションの実行速度が遅い場合、ディスク速度が潜在的な根本原因である可能性があります。Support Tools Utility を使用してディスク アクセス速度のベンチマークを行うことで、この原因を特定できます。
Support Tools Utility を、JIRA Server 上の任意の書き込み可能なフォルダ (たとえば、Linux では ~/$username$/temp、Windows では c:\temp) にダウンロードします。
これは .jar 拡張子のファイルであり、Internet Explorer がこれらを zip にリネームする場合があります。これが発生した場合、ファイルを .jar に戻します。zip ファイルの展開は行わないでください。
- Windows の場合、ターミナル ウィンドウを開きます (
Start >> Run >> type in 'cmd'
に移動)。 - Linux/Unix の場合: コマンド ラインを開きます。
- ツールの実行時には一時ディレクトリへの書き込みアクセスが必要になります。このツールはディスク速度を計算するために大量のファイルを作成および削除します。
ツールをダウンロードしたディレクトリに移動 (CD) して、次を実行します。
java -Djava.io.tmpdir=<index directory> -jar support-tools.jar
使用しているアプリケーションに応じて、以下の <index directory> パスを使用して次のディレクトリをテストしてください。
JIRA の場合は、既定のインデックス ディレクトリである
<jira_home>/caches/indexes on JIRA 7.x and below, <jira_home>/caches/indexesV1 folder on JIRA 8.x and above
に対してテストします。Insight を使用している場合には、<jira_home>/caches/insight_indexes too.
に対してテストしてください。Confluence の場合は、
<confluence-home>/index.
に対してテストします。For Fisheye/Crucible, the test should be run against
<FISHEYE_INST>/cache
and<FISHEYE_INST>/var/cache
.
Data Center 版の JIRA または Confluence を実行している場合、各ノードで速度チェックを実行してください。インデックスは各ノードにローカルに保存されているためです。
- 結果の平均を選択して評価し、速度テストの結果を判断する方法の詳細については「結果の評価」セクションを確認してください。
たとえば、JIRA では、インデックスへのディスク I/O が頻繁に使用されるため、ディスク アクセスのパフォーマンスが特に重要です。インデックスは検索が行われるたびに読み取られ、課題の更新がコミットされるたびに書き込まれるためです (詳細は、「 Jira サーバーのインデックスの問題のトラブルシューティング 」を参照してください)。
操作
この基本的なテストは、java.io.tmpdir
ディレクトリにある一時ファイルへのオープン、読み取り/書き込み、クローズ、および削除処理を各測定につき 1000 回行い、結果を以降の評価セクションのように報告します。このテストは、ファイル システムへのアクセスについて、Java プロセスのパフォーマンスの最も近いシミュレーションであり、ディスクを使用しているときのアプリケーション パフォーマンスの正確な測定に利用できます。他のディスク測定ツールを使い、それらが Java JDK/JRE の個々のパフォーマンスを測定しない場合は、異なる結果が返される可能性があります。
Java ソースは JAR 内で確認できます。ファイルが圧縮されていない場合はソースを表示できます。
ソリューション
このツールは、ディスクそのものの実際の速度ではなく、オペレーティング システムで実行されている Java の基本的なディスク評価を主な目的として設計されています。OS レベルの問題により、非常に高速なディスクであるにもかかわらず Java が低速である可能性もあります。これはディスクの完全な分析ソフトウェアの代替品ではなく、ディスクにハードウェアの問題が見受けられる場合やディスクが低速な場合は、システム管理者やサーバーのホスティング プロバイダーにお問い合わせください。
ベンチマーク結果を確認するときは次の点に留意します。
- 主に平均値に注目します。
- オープン/クローズ速度が悪いが読み取り/書き込み速度は良い場合、アンチウイルス ソフトが影響している可能性があります。
- 最小値が大きく、速度は平均的な場合、ディスクの速度が低下しているか、ハードウェアに問題が発生している可能性があります。
- ディスクの平均値が大きく、最小速度が小さい場合、環境が影響している可能性があります (詳細については以降を参照)。
- Jira の場合、インデックスへのアクセスが頻繁に行われるため、オープンとクローズは非常に重要です。平均的な検索は 1 つのファイルを何度もクローズします。
- Make sure that the disk is not in use by any other processes running on your system.
結果の評価
以降は、結果の分類に使用できる、おおよその平均速度のブレイクダウンです。
統計情報 | Excellent | OK | Bad |
---|---|---|---|
オープン | < 40,000 | 40,000 - 150,000 | > 150,000 |
読み取り/書き込み | < 40,000 | 40,000 - 100,000 | > 100,000 |
クローズ | < 20,000 | 20,000 - 100,000 | > 100,000 |
削除 | < 50,000 | 50,000 - 300,000 | > 300,000 |
考えられる原因
低速なディスク アクセスを引き起こす可能性がある環境要因の例には、次のようなものがあります。
- アンチウイルス ソフトウェア。「Jira Server のクラッシュやパフォーマンスの問題のよくある原因」ナレッジベース記事にあるように、アンチウイルス ソフトウェアはオープンおよびクローズ回数を制限するため、アプリケーションの処理に悪影響を与える場合があります。
- リモート ディスクまたは共有ドライブ。
- 低速なネットワーク上での他のマシンへの同期。
- VMware などの仮想化 OS (詳細については「Jira サーバーを仮想環境で実行する」をご確認ください)。
- ディスクのデフラグ ジョブが実行中である。
- ディスク障害などの、ハードウェアの問題。
- ファイル システムの暗号化。
- OS が制御している、ファイルの自動圧縮。
- Java バージョンと OS での固有の問題。これは稀な例ですが、JVM 内のバグや既知の問題が特定の OS でパフォーマンスを悪化される可能性があります。
- ディスクを同時に使用している他のアプリケーションまたは処理。
- ディスクのキャパシティが満杯に近い。特定の OS ではこれによってディスクでのパフォーマンスが悪化する場合があります (この例の場合は Solaris)。
- Windows で、Lucene のファイル削除で問題が発生している。
Lucene は mmapdirectory を使用し、特に Windows OS に対して使用するため、クローズ後もこれらのマップされたファイルに対してハンドルを開いたままにし、これらのファイルの削除を許可しません。Lucene Class MMapDirectory
ベンチマークの例
いくつかのベンチマークの例です。
Excellent
TOTALS
---- ---- ---- ---- ----
stat avg median min max
---- ---- ---- ---- ----
open 35,289 36,000 29,000 472,000
r/w 30,934 31,000 23,000 77,000
close 14,988 5,000 5,000 9,796,000
delete 39,135 40,000 31,000 123,000
---- ---- ---- ---- ----
All times are in nanoseconds.
これは、SSD と同等のディスク ハードウェア テクノロジーを使用しているプレミア ホスティング プロバイダーです。
OK
TOTALS
---- ---- ---- ---- ----
stat avg median min max
---- ---- ---- ---- ----
open 75,830 62,000 44,000 2,869,000
r/w 46,407 40,000 35,000 907,000
close 5,751 5,000 4,000 336,000
delete 118,942 81,000 65,000 22,864,000
---- ---- ---- ---- ----
All times are in nanoseconds.
Bad
TOTALS
---- ---- ---- ---- ----
stat avg median min max
---- ---- ---- ---- ----
open 275,886 267,184 246,412 2,544,101
r/w 92,956 81,538 70,727 7,358,896
close 3,194,958 3,177,771 3,076,064 4,331,872
delete 542,650 530,271 514,226 1,771,416
---- ---- ---- ---- ----
All times are in nanoseconds.
このベンチマークは、ウィルス スキャンが有効化されている、非常に高速なディスクのものです。
平均
TOTALS
---- ---- ---- ---- ----
stat avg median min max
---- ---- ---- ---- ----
open 133,704 121,000 83,000 12,787,000
r/w 30,892 26,000 22,000 3,176,000
close 40,652 40,000 10,000 108,000
delete 274,710 254,000 211,000 15,151,000
---- ---- ---- ---- ----
All times are in nanoseconds.
これは、低負荷状態で 5 つの Jira アプリケーション インスタンスを実行している WD Black 3.0 GB/s 7.2k RPM ドライブの例です (これは推奨されません。同じサーバーで複数のアプリケーションを実行する場合の影響がご確認いただけるかと思います)。
*注意: 上記の結果は、ローカル <index directory> フォルダのみのガイドラインとして提供しています。インデックスは共有ドライブではなく各ノードにローカルに保存されるため、Data Center 構成の $SHARED_HOME でこれらのテストを実行する必要はありません。場合によっては、弊社サポートが $SHARED_HOME で同じテストの実行を要求することがありますが、それは添付ファイルまたはインデックス復旧メカニズムに関連するパフォーマンスの問題がある場合に限られます (長期間のダウンタイム後にノードを起動した場合や、それぞれのアプリケーションでインデックス復旧が有効になっている場合など)。アトラシアンのパブリック インスタンスの $SHARED_HOME には、次の値があります。
TOTALS
---- ---- ---- ---- ----
stat avg median min max
---- ---- ---- ---- ----
open 4,790,174 4,638,824 3,943,820 13,139,894
r/w 14,947 13,312 3,519 83,294
close 4,398,125 4,297,768 3,708,446 16,138,393
delete 4,323,586 4,178,885 3,581,537 33,963,856
---- ---- ---- ---- ----
All times are in nanoseconds.
(!) 注: これらはあくまで参考値であり、推奨値でもパフォーマンス目標値でもありません。