Jump to content 日本-日本語

製品  >  ソフトウェア  >  HP- UX Developer Edge

J2EEパフォーマンス・チューニングの“虎の巻”・後編

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む
J2EEパフォーマンス・チューニングの“虎の巻”・前編
システム・レベルのJavaパフォーマンス計測では、HP-UXの管理ツールGlanceが重要な役割を担う。とはいえ、GlanceはJavaに特化したものではないため、その計測データが何を意味するのかは、自ら各自判断しなくてはならない。例えばコア氏は、「Glanceを使えば、Javaアプリケーションがオープンしている個々のソケットの送受信バイト数も知ることが可能だ」と説明する。このようにトランザクション・レベルからシステム・レベルまでを網羅し、いくつかの視点からITシステムの性能を解析する“急がば回れ”の方法論を実践していけば、原因不明のパフォーマンス低下に足元をすくわれることもないはずだ。
J2EEパフォーマンス・チューニングの“虎の巻”・後編
Glanceを活用しよう
HPjmeterによるJavaプロファイリング
2006年1月
テクニカルライター 吉川和巳

Glanceを活用しよう


システム・レベルのパフォーマンス計測では、HP-UXの管理ツールGlanceが重要な役割を担う。Glanceを用いることで、CPUやメモリ、ネットワーク、I/Oなどのパフォーマンス情報をシステム・レベルで収集し、GUIやコマンドラインで表示できる。また、各プロセスが消費するリソースやオープンファイル数、メモリ領域サイズ、システムコール数、スレッドリストなどを表示することで、プロセス単位でのパフォーマンス分析が可能だ。

ただし、GlanceはあくまでOSレベルのパフォーマンスデータの取得のみを目的としたツールであり、Javaに特化したものではない。よって、Glanceが示す各種のデータが何を意味するのかは、利用者が各自判断しなくてはならない。例えば図1を見てみよう。

   
  図1:GlancePlusによるJVMプロセスのメモリ消費表示
図1:GlancePlusによるJVMプロセスのメモリ消費表示
 
図1は、Glance(GUIモード)を用いてJVMプロセスが消費するメモリ領域サイズを表示した例である。ここで、左半分に表示された「RSS」で終わる各行は物理メモリの消費量(Resident Set Size)を示し、右半分の「VSS」の各行は仮想メモリの消費サイズ(Virtual Set Size)を示す。JVMがアクティブに利用しているメモリ量を見るには、RSSの各項目に注目すればよい。以下の表は、JVMプロセスに対してGlanceを実行した場合、各項目がどのような意味を表すかを示したものである。この表が示すように、Javaアプリケーションが消費するメモリのほとんどはOther RSSのサイズに反映される。

表:JVMプロセスに対するGlance表示の内容

項目名

内容

Data RSS JVM本体が使用するデータ領域
Text RSS JVM本体のバイナリコードサイズ
Stack RSS JVM本体のメインスレッド用スタック
Other RSS Javaヒープや共有ライブラリ、Javaスレッドのスタックなど

OSスレッドとJavaスレッドの対応付け

またGlanceでは、JVMプロセス内部で動作するすべてのスレッドの一覧を表示できる。

 
図2:GlancePlusによるJVMプロセスのスレッドリスト表示
図2:GlancePlusによるJVMプロセスのスレッドリスト表示
 
ここで表示されるのはOSのスレッドIDであり、JavaスレッドのIDがそのまま表示されるわけではない。そこで以下のようなコマンドを実行し、OSスレッドとJavaスレッドの対応付けを明らかにする必要がある。

# kill -SIGQUIT <JVMのプロセスID>

このコマンドにより、JVMプロセスに対しSIGQUITシグナルが送信される。HP-UX対応のJVM「HP JVM」では、このシグナルを受けて、以下のようなスタックトレースを表示する機能を備えている。

"Worker Thread 17" prio=9 tid=0x1310b70 nid=41 lwp_id=14165 suspended[0x1194d000..0x11948478]
at fields.FieldPropertiesLibraryLoader.forClass(FieldPropertiesLibraryLoader.java:67)
- waiting to lock <0x3ca45848> (a java.lang.Object)
at fields.FieldsServiceImpl.getFpl(FieldsServiceImpl.java:75)
at fields.FieldsServiceImpl.getFpl(FieldsServiceImpl.java:64)
<以下略>

このスタックトレースにおいて、1行目の「Worker Thread 17」という部分がJavaスレッド名、そして「lwp_id=14165」という部分がHP-UXのスレッドIDを表している。これを見ることで、Glanceが表示する各スレッドがどのJavaスレッドに対応するのかが分かる。

オープンファイルの調査

Glanceを利用することで、JVMプロセスがオープンしているファイルの一覧を表示することも可能だ。

 
図3:GlancePlusによるJVMプロセスのオープンファイルの表示
図3:GlancePlusによるJVMプロセスのオープンファイルの表示
 
図3の例では、画面上部の「Open Files」において、JVMプロセスが合計1008個のファイルをオープン中であることがわかる。例えばJavaアプリケーションのさまざまな負荷状況におけるオープンファイル数を計測しておけば、カーネル・パラメータ「オープン可能な最大ファイル数」に最適な値を導けるはずだ。またオープンファイルの一覧は、ネットワークI/Oの挙動を調べる手段としても使える。「Glanceのオープンファイル一覧を見れば、JavaアプリケーションがオープンしているTCPソケット(File Type=socket)の一覧を確認できる。ファイル・オフセット(File Offset)の値の変化を見れば、個々のソケットの送受信バイト数も知ることが可能だ」(コア氏)。

トップへ   次のページへ

本ページの内容は執筆時の情報に基づいており、異なる場合があります。

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

HPEサポートセンター
製品の標準保証でご利用いただける無償のサービスです。

ショールーム

ショールーム 導入をご検討のお客様へ
業務アプリケーションの継続・標準化・開発性とシステム担当者様、システム開発者様が抱える悩み・疑問に対する解決策実体験して頂けます。
印刷用画面へ
プライバシー ご利用条件・免責事項