SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

GCの解析とチューニングポイント

WebSphere Application Serverのチューニング 1

IBM Pattern Modeling and Analysis Tool for Java Garbage Collector(PMAT)

 verbosegcデータを解析し、時系列の折れ線グラフを表示するツールです。以下のURLからダウンロードできます。

 他の解析ツールは特定ベンダーのJDKにのみ対応するものが多いのですが、これはIBM、Solaris、HP-UXのJDK 1.4~5.0に対応するスグレモノです。2007年7月28日時点の最新版は1.3.2です。

起動

 ga132.zipをダウンロードして解凍すると、中に「ga132.jar」が入っています。これが本体です。以下のコマンドで起動しましょう。

java -Xmx256m -jar ga132.jar

 このコマンドはバッチファイルにしておくと便利です。

 -Xmxはヒープ(メモリ)の最大使用サイズを指定しています。native_stderr.logが大きい場合、解析には十分なヒープを確保する必要があります。256Mbytesでは足りない場合、もっと大きなサイズ、例えば512m(512Mbytes)を指定し、ヒープを確保してください。

 ※PMATの1.4では読み込み時にParseExceptionが発生します。以下のようにオプションを追加して回避できます。(Kazooさん、情報ありがとうございます。)

java -Duser.language=en -Duser.country=US -Xmx256m -jar ga140.jar
PMATの起動画面
PMATの起動画面

verbosegcデータを開く

 verbosegcデータを以下の手順で開きます。

  • PMATのメニュー→[File]→[Open verbosegc Files(IBM SDK)]→ファイル選択ダイアログでログファイルを選択し、[Open]

 「native_stderr.log」を開くと解析サマリが表示されます。

解析サマリ
解析サマリ

 このサマリには重要な情報があります。特に重要な項目は以下のとおりです。

主な項目
項目 説明
Number of Garbage Collections GC(SYS+AF)の発生回数。
Number of Allocation failures GC(AF)の発生回数。負荷が大きいほど頻繁に発生します。
Total Garbage Collection pause GCを行うために処理を停止した時間の合計[s]。
Maximum Allocation Request AFが発生する原因となったヒープ確保の要求の最大サイズ[bytes]。

 GCには二つのタイプ、SYS(システムGC)とAF(Allocation Failure)があります。

SYSとAF
SYS System.gc()を呼び出すことで発生するGC。サーバ自身が、システムの起動時と終了時に呼び出す。
AF アプリケーションがメモリを確保(newでインスタンスを作るとき)するときに、ヒープ内に十分なエリアを確保するためにGCが発生する。

ポイント:ピーク時のAF発生間隔

 AF発生間隔を計算しましょう。

  • AF発生間隔[回/s]=単位時間内のAF発生回数/単位時間[s]

 ピーク時のAF発生間隔は、サーバの限界負荷を見極める目安になります。2分間に1回程度は正常な範囲ですが、短くなればなるほど負荷が高いことになります。メモリが不足しているか、負荷が想定以上であると考えら得ます。

ポイント:ヒープ確保の要求の最大サイズ

 大きなヒープ確保要求はGCを発生させる確率が高くなります。オブジェクトを生成する部分は、「小さければ多くてもよい」という考えで設計してください。

次のページ
GCグラフの表示

修正履歴

この記事は参考になりましたか?

特集記事連載記事一覧

もっと読む

この記事の著者

佐藤 龍之介(サトウ リュウノスケ)

某SIer にて、主にWeb系開発プロジェクトに従事。 趣味はラーメン食べ歩き。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1620 2008/08/19 21:58

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー