7.16.4 最悪レスポンス時間を短くするチューニング
このチューニングは,GCによるアプリケーションの停止時間を短くすることで,最悪レスポンス時間を短くする方法です。そのため,レスポンス時間のうち,GCによるアプリケーションの停止時間が占める割合が大きい場合に有用です。GCによるアプリケーションの停止時間は,VG1ログのgc_timeの項目から取得できます。VG1ログの詳細については,マニュアル「アプリケーションサーバ アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「-XX:[+|-]HitachiVerboseGC(拡張verbosegc情報出力オプション)」を参照してください。
最悪レスポンス時間を短くするには,GCによるアプリケーションの停止時間を短くする必要があります。G1GCでは停止時間を指定することができるため,指定する値を小さくすることで最悪レスポンス時間を短くします。
-
-XX:MaxGCPauseMillisオプション
指定する値を小さくすることで,目標停止時間が短くなり,最悪レスポンス時間が短くなります。ただし,この方法ではGC回数が多くなりスループットが低下します。そのため,最悪レスポンス時間を短くするチューニングをした場合,再度システム要件を満たしているか検証してください。また,G1GCではどのGCでもNew領域をGCの対象とするため,New領域の回収にかかる時間以下にはGC時間を抑えられません。それ以上GC停止時間を短くできないGC停止時間を最小停止時間と呼びます。目標停止時間を短くしても最悪レスポンス時間が短くならない場合は,ログのGC停止時間を確認してください。
GC停止時間は次のログの背景色付き太字の部分から確認できます。
[VG1]<Wed Jun 12 11:21:10 2013>[Young GC 899070K/899072K(1048576K)->501755K/501760K(1048576K), 0.0931560 secs][Status:-][G1GC::Eden: 389120K(389120K)->0K(397312K)][G1GC::Survivor: 41984K->41984K][G1GC::Tenured: 459776K->459776K][G1GC::Humongous: 2048K->2048K][G1GC::Free: 609536K->607232K][Metaspace: 3634K(4492K, 4492K)->3634K(4492K, 4492K)][class space: 356K(388K, 388K)->356K(388K, 388K)][cause:G1EvacuationPause][RegionSize: 1024K][Target: 0.2000000 secs][Predicted: 0.2495800 secs][TargetTenured: 0K][Reclaimable: 0K(0.00%)][User: 0.0156250 secs][Sys: 0.0312500 secs][IM: 729K, 928K, 0K][TC: 509][DOE: 16K, 171][CCI: 2301K, 49152K, 2304K]
目標時間を短くしてもGCの停止時間が短くなっていない場合は,最小停止時間に達しています。また,目標時間を最小停止時間に近づけすぎると,目標停止時間を超えたときの超え幅が大きくなり,最悪レスポンス時間が長くなる場合があります。目標停止時間を短くしてもシステム要件を満たせない場合は,チューニングではシステム要件を満たせません。そのため,アプリケーションの改修を行ってください。