Javaアプリケーションの動きが遅くなる現象(スローダウン)が発生した場合に、考えられる原因とその対処方法を説明します。
想定される原因(ガーベジコレクション)
ガーベジコレクションが発生すると、ガーベジコレクションが終了するまでの間、Javaアプリケーションのすべてのスレッドが停止されます。このため、Javaアプリケーションのレスポンス(応答)が遅くなる場合があります。
ガーベジコレクションのログを採取して、ガーベジコレクションが動作したタイミングとスローダウンが発生したタイミングを照合してください。ガーベジコレクションが原因でスローダウンになる場合は、Javaヒープをチューニングして、ガーベジコレクションの動作具合を改善してください。
ガーベジコレクションのログを採取する方法は、“9.2.6 ガーベジコレクションのログ出力”を参照してください。
Javaヒープのチューニング方法は、“9.4.1 Javaヒープのチューニング”を参照してください。
例
スローダウンの事例
同じソフトウェアとJavaアプリケーションが動作している複数のWebサーバのうち、一部のサーバだけがスローダウンしたという事例があります。この原因は、マシンに搭載されている物理メモリ(RAM)の容量の違いでした。
物理メモリ(RAM)が少ないマシンの場合、ガーベジコレクションの実行に伴い、ディスクのスワッピングが発生し、スローダウンすることがあります。