SHOEISHA iD

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

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

特集記事

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

WebSphere Application Serverのチューニング 1

  • このエントリーをはてなブックマークに追加

J2EEサーバの健康診断をする上で、GC(ガーベッジ・コレクション)の発生状況の把握は非常に重要です。GCの発生状況を監視することによって、メモリリークを発見したり、サーバの負荷状況を調べたりすることができます。 そこで、商用J2EEサーバとしてはシェアの高いWebSphere Application Serverを想定し、GCの解析方法とチューニングポイントを説明します。

  • このエントリーをはてなブックマークに追加

はじめに

 J2EEサーバの健康診断をする上で、GC(ガーベッジ・コレクション)の発生状況の把握は非常に重要です。GCの発生状況を監視することによって、メモリリークを発見したり、サーバの負荷状況を調べたりすることができます。

 そこで、商用J2EEサーバとしてはシェアの高いWebSphere Application Serverを想定し、GCの解析方法とチューニングポイントを説明します。

対象読者

 WebSphere Application Serverを利用したシステム開発に携わる、開発者・アーキテクト。

必要な環境

  • サーバ:WebSphere Application Server 6.0以上
  • 解析用PC:IBM JDK 1.4.2以上がインストールされていること

 IBM JDK 5.0は、developerWorksのWebページからダウンロードできます。Eclipseとセットになっています。

WebSphereの設定

 GCを解析するためには、WebSphereに解析用ログ(native_stderr.log)を出力する設定を行います。

設定の手順

 WebSphereの管理コンソールを開き、左側のメニューから

  • [サーバー]→[アプリケーション・サーバー]→[(サーバー名)]→[構成]→
  • [サーバー・インフラストラクチャー]→[Javaおよびプロセス管理]→[プロセス定義]→[構成]→
    [追加プロパティー]→[Java仮想マシン]→[構成]→[一般プロパティー]→[冗長ガーベッジ・コレクション]をチェック
  • [OK]ボタンを押下、上部に表示されるメッセージ枠内の「直接マスター構成に保管できます。」の[保管]をクリック

 以上を行ったらサーバを再起動します。

 「native_stderr.log」は以下のディレクトリに出力されます。

  • native_stderr.logの出力ディレクトリ
  •  
    <WAS導入ディレクトリ>\profiles\<サーバディレクトリ>\bin
    
     
    (例) windowsの場合
    C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1
    
     
    「native_stderr.log」の中身はverbosegcログ(冗長ガーベッジ・コレクション)と呼ばれるものです。
ポイント
 native_stderr.logは常に出すようにしましょう。
native_stderr.logはシステムの健康診断書のようなものです。ログを出すこと自体は大きな負荷にはなりませんので、常に出力するようにしておくことをお勧めします。定期的に回収して健康診断を行いましょう。

verbosegcデータ

 GCの解析に必要なデータは、JVMがnative_stderr.logに出力します。verbosegcデータとは、GCが発生する度にJVMが出力するXML形式のデータです。データに含まれる主な情報は次のとおりです。

  • GC発生時刻
  • GC発生の原因となったメモリ確保要求サイズ
  • GCを実行した結果、確保されたメモリ量
  • GCにかかった時間
verbosegcの一例:(native_stderr.logの一部)
<?xml version="1.0" ?>
<verbosegc>
<af type="tenured" id="9016" timestamp="Fri Jul 13 00:10:54 2007" 
intervalms="953273.470">
<minimum requested_bytes="80" /> <time exclusiveaccessms="0.102" /> <tenured freebytes="1513888" totalbytes="805306368" percent="0" > <soa freebytes="0" totalbytes="803140608" percent="0" /> <loa freebytes="1513888" totalbytes="2165760" percent="69" /> </tenured> <gc type="global" id="9024" totalid="9024" intervalms="953273.995"> <refs_cleared soft="32" weak="454" phantom="1274" /> <finalization objectsqueued="1582" />

 verbosegcはXML形式なので、必ずヘッダ(<?xml>タグと<verbosegc>タグ)とフッタ(</verbosegc>タグ)が付いていなければなりません。しかし、ログのローテート(日付が変わったりファイルサイズが設定された限界に達した時、ログの出力先を別のファイルに切り替えること)が行われ、ヘッダ、フッタがないファイルができる場合があります。

 このようなファイルができてしまった場合は、そのままではツールが解析できません。不足したヘッダ、フッタを追加しておきましょう。

ヘッダ(太字部分)
<?xml version="1.0" ?>
<verbosegc>
<af type="tenured" id="65" timestamp="Sun Jun 17 00:24:35 2007" 
intervalms="4730690.326">
フッタ(太字部分)
</af>
</verbosegc>

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
IBM Pattern Modeling and Analysis Tool for Java Garbage Collector(PMAT)

修正履歴

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

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1620 2008/08/19 21:58

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング