よくJavaのアプリケーションサーバでFull GCが原因で障害が発生すると聞きます。


Full GCが発生した場合にユーザから見るとどのような状態になっているのでしょうか?
前提としては
 ・Web-AP-DBの3層モデルのWebアプリケーション
 ・CPUリソースは余裕があるものとします。
 ・FullGCには1分程度かかるものとします。

私自体はFullGCが起こっていても、CPUリソースに余裕があれば、ユーザにはなんの影響がないと考えています。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:mae-san No.1

回答回数13ベストアンサー獲得回数0

ポイント120pt

http://www.atmarkit.co.jp/fjava/rensai3/javavm02/javavm02_2.html

@IT:チューニングのためのJava VM講座(後編)

アプリの作りや規模、VMのチューニングにもよりますが、応答が一定時間返ってこなくなる障害が一般的だと思います。

CPUリソースに余裕があればユーザー(というか具体的に言うとweb applicationの動作)に影響がないというのは一概に言えないと思います。理由としてはGC実行時に消費するリソースはCPUだけではありませんし、アプリケーション・スレッドと並列的に実行する、という相互排他性自体が問題だからです。ガーベジ・コレクターが仕事をするには、ガーベジ・コレクターが一定期間操作するヒープ空間(メモリ)に対して、どのスレッドもアクセスしないようにする必要があります。この期間は、GCの「stop-the-world」フェーズとして知られています。

対応策としては、ヒープサイズやGCタイミングのチューニングが考えられます。 GCへの影響に関していえばヒープサイズは必ずしも大きければよいわけでもなく、サイズが大きくなれば必然的にGCの範囲も広がりますのでそれだけGC実行の所要時間が増えます。ですのでアプリが必要な量を適切に割り当てる事と、ユーザーアクセスの頻度とアプリの処理の重さを考慮してGCの設定をtチューニングするのが良いと思います。

 

id:s_genjou

なるほど、GCの「stop-the-world」フェーズというのがあるんですね。そこを考慮しなければならないということですね。 ずばりの回答です。

ありがとうございます。

2004/08/31 18:03:37

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません