人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: s_genjou
●カテゴリ:ウェブ制作
✍キーワード:AP CPU DB GC Java
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● mae-san
●120ポイント

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チューニングするのが良いと思います。

◎質問者からの返答

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

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ