ガーベージ・コレクションの一時停止

1秒を超えるGCの一時停止、または1秒以内に一時停止が複数回発生して合計するとほぼ1秒に達するような状況をトラブルシューティングします。

DataStax Enterpriseヘルプ・センターでは、トラブルシューティング情報も提供しています。

1秒を超えるGCの一時停止、または1秒以内に一時停止が複数回発生して合計するとほぼ1秒に達するような状況をトラブルシューティングします。

ガーベージ・コレクション(GC)は、Javaがメモリから不要になったデータを削除するプロセスです。ガーベージ・コレクションの一時停止(ストップ・ザ・ワールド・イベントとも呼ばれる)は、JVMの続行のために領域が必要な場合に発生します。一時停止中は、すべての操作が一時中断します。一時停止はネットワーキングに影響するため、クラスター内の他のノードに対して、そのノードはダウンしていると表示される場合があります。さらに、Select文とInsert文は待機するため、読み取りと書き込みでレイテンシーが増加します。1秒を超える一時停止、または1秒以内に一時停止が複数回発生して合計するとほぼ1秒に達するような状況は回避しなければなりません。問題の根本的原因は、メモリー内にデータを格納する速度がデータを削除する速度を上回ることです。

過度の一時停止が発生していることを示す2つの代表的なログ・メッセージは、次のとおりです。

INFO [ScheduledTasks:1] 2013-03-07 18:44:46,795 GCInspector.java (line 122) GC for ConcurrentMarkSweep: 1835 ms for 3 collections, 2606015656 used; max is 10611589120
INFO [ScheduledTasks:1] 2013-03-07 19:45:08,029 GCInspector.java (line 122) GC for ParNew: 9866 ms for 8 collections, 2910124308 used; max is 6358564864
ガーベージ・コレクションの一時停止の原因として、次のことが挙げられます。
  • 問題が最近発生しはじめた場合は、最近行ったアプリケーションの変更を確認してください。
  • 過剰なトゥームストーン・アクティビティー:削除のワークロードが過大であることが原因であることが多い。
  • 大規模な行更新または大規模なバッチ更新:個々の書き込みサイズを1 Mb未満に減らしてください。
  • 非常に広い行:リペア、Select、キャッシングなどで問題が発生します。

サーバー側の要因には、次のことがあります。

  • JVMパラメーターが欠落しているか異常である。最新の製品バージョンのデフォルト設定と比較してください。
  • JNAが見つからない。
  • スワップが有効になっている。
詳しくは、「Java仮想マシンのチューニング」を参照してください。