Hitachi

Cosminexus V11 アプリケーションサーバ システム設計ガイド


9.4.1 しきい値を設定する目的

オンライン処理とバッチ処理で同じリソースにアクセスする場合,オンライン処理のスループットに影響を与えないように考慮する必要があります。

バッチアプリケーション実行時に空きメモリが少なくなると,JavaVMによってバッチサーバのFullGCが実行されます。この場合,バッチサーバ上で動作するすべてのプログラムの処理が中断されます。バッチアプリケーションがリソースを排他していた場合,そのリソースはバッチサーバのFullGC実行中も排他された状態になります。オンライン処理の中に排他中のリソースを使用する処理があった場合は,そのオンライン処理も中断されてしまいます。

これを防ぐために,メモリ使用量のしきい値を設定して,メモリ不足が起こる前に明示的にFullGCを発生させるようにします。明示的なFullGCは,リソースを排他していないタイミングで発生するように制御できます。JavaVMによってFullGCが実行される前に空きメモリを増やしておくことで,リソース排他中にFullGCが実行されることを防ぎます。

しきい値を設定した場合,次に示す状態になるとFullGCが実行されます。ただし,そのときにバッチアプリケーションがリソースを排他していた場合は,排他が解除されるまで待ってから実行されます。

SerialGCが有効な場合
  • Tenured領域消費サイズのTenured領域合計サイズに対する割合≧しきい値

  • New領域合計サイズのTenured領域最大空きサイズに対する割合≧しきい値

  • Metaspace領域消費サイズのMetaspace領域最大サイズに対する割合≧しきい値

G1GCが有効な場合
  • Javaヒープ領域消費サイズのJavaヒープ領域合計サイズに対する割合≧しきい値

  • Metaspace領域消費サイズのMetaspace領域最大サイズに対する割合≧しきい値