Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

WebSphere Application Serverのチューニング 1

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/08/30 14:00

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>

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

修正履歴

  • 2007/09/13 16:43 PMAT ver 1.4でのファイル読み込み時ParseException発生の回避方法を追加。

著者プロフィール

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5