目標 ISAの「ガイド付きトラブルシューター」機能を用いて、前頁で発生させたOutOfMemorErrorの この章では、
by user
Comments
Transcript
目標 ISAの「ガイド付きトラブルシューター」機能を用いて、前頁で発生させたOutOfMemorErrorの この章では、
System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 1 / 19 Update on 2009-10-28 目標 この章では、ISAの「ガイド付きトラブルシューター」機能を用いて、前頁で発生させたOutOfMemorErrorの 問題分析を行います。 目次 1. ガイド付きトラブルシューターの概要 2. ガイド付きトラブルシューターを使用した問題判別 ~事象の判別~ 3. ガイド付きトラブルシューターを使用した問題判別 ~資料解析 -verbosegc- ~ 4. ガイド付きトラブルシューターを使用した問題判別 ~資料解析 -heapdump- ~ 5. 補足:javacoreファイルの確認 1. ガイド付きトラブルシューターの概要 ガイド付きトラブルシューターは、次にとるべきステップについてのガイドを提示し、ユーザーが自身で問 題判別および資料解析を行うのをサポートします。 ケース・マネージャーを使用することで、ファイルの収集および整理、重要なイベントの記録、実行したス テップの履歴の表示を行うことができます。また、他 のメンバーや IBM との間でケースをインポートおよ びエクスポートすることが可能になります。ケース・マネージャーの詳細については、「 ケース・マネー ジャーの使用」のヘルプを参照してください。 また、ガイド付きトラブルシューターは、そのステップの中で、診断データ・ファイルを分析するために必要 なツールを指示してくれます。ユーザーはガイドに 従い、診断データ・ファイルに関連付けられたツールを 起動し、データ・ファイルの分析を行うことができます。ツールによる分析の完了後には、ガイド付きト ラブ ルシューターを使用して結果を考察することができます。そしてその結果に基づき、次に実行すべきアク ションを判断することができます。 2. ガイド付きトラブルシューターを使用した問題判別 ~事象の判別~ ここでは実際に「ガイド付きトラブルシューター」機能を用いて、前頁で発生させたOutOfMemorErrorの 問題分析を行います。 1) ISAのトップページより、「問題分析」を選択します System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 2 / 19 2) 「ガイド付きトラブルシューター」タブを選択し、「問題のトラブルシューティング」にチェックして「次へ」を クリックします 以降では、前頁で発生させたOutOfMemoryErrorにもとづいてトラブルシューティングを行っていきま す。 チェックボックスの選択に迷った時には、選択肢横の「+」 を展開して説明文を確認したり、画面左下の 説明を確認しながら、適切な項目を選択して進めてください。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 3 / 19 3) 新規ケースを作成します。ここでは「OOM」と入力します。 4) トラブルシューティングを行う製品として、「WebSphere Application Server Troubleshooting」 を選択します。 (「Java Runtime Environment Troubleshooting」を選択してもOutOfMemoryErrorの問題分析 を進めることはできます) System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 4 / 19 5) ここで行いたいアクションとして、「Guide me through identifying my symptom and failing component」を選択します。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 5 / 19 6) アプリケーション稼動時の問題であるため、「The application performs poorly or behaves unexpectedly」を選択します。 7) 今回発生した事象は、(OOM発生による)エラー画面の表示であるため、「My application returns the wrong results or does not behaves as I expect」を選択します。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 6 / 19 8) WASプロセス(JVM)の問題判別のため、「Troubleshoot Java Virtual Machine (JVM) problems」を選択します。 9) OutOfMemoryErrorなので「Troubleshoot memory management problems」 を選択し ます。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 7 / 19 10) Windows環境であるため「Troubleshoot IBM JVMs」を選択します。 ※注 IBM JVMs ・・・ Windows / AIX / Linux non-IBM JVMs ・・・ Solaris / HP-UX 11) 「A java.lang.OutOfMemoryError message is present in the log files or console output」を選択します。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 8 / 19 12) OutOfMemoryErrorについての説明を確認し「次へ」をクリックします 3. ガイド付きトラブルシューターを使用した問題判別 ~資料解析 -verbosegc- ~ ここからは取得した資料の解析フェーズになります。 まずはケース「OOM」で使用する資料をケースに追加します。ケースごとに資料管理することで、事前に 追加しておくことで、解析ツールから資料を読み込む際にファイルが見つけやすくなります。(ケースへの 資料の追加は必須ではありません。 13) verbose GC ログおよび heapdump ファイルを取得しているので、一番上の「A file containing vernose GC information or heapdump files exist」を選択します。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 9 / 19 14) このケース(ケース名:OOM)に関連するファイルを追加します。「ファイルの追加」をクリックします 15) 前頁で取得した heapdump ファイルと javacore ファイル、そしてverbosegcログ (native_stderr.log)を選択します デフォルトの出力先: javacore、heapdump ・・・ <WAS_ROOT>\profiles\<profile_name> 直下 native_stderr.log ・・・ <WAS_ROOT>\profiles\<profile_name>\logs\<server_name> 以 下 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 10 / 19 16)ケース「OOM」に上記3つのファイルが追加されたことを確認します 17) 資料解析に進みます。「I collected the diagnostic data files, help me analyze them」を 選択します。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 11 / 19 18) verbose GC ログの解析から行います。「Analyze a file containing verbose garbage collection (VGC)」 を選択します。 19) ここではGCMVを使用します。「I want to use GCMV to analyze verbose GC logs」を選択 します。 ※解析ツールの概要については「3.ISA 問題分析の概要」をご参照ください。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 12 / 19 20) GCMVは既にアドオンとして追加されているので、「GCMV is installed, start the analysis of the verbose GC information」を選択します。 ※ GCMVが追加されていない場合には、「4.ISA PDハンズオンの準備」を参考に、製品アドオン(IBM Developer Kit for Java 6.0)、ツールアドオンから GCMV を追加してください。 アドオン名:IBM Monitoring and Diagnostic Tools for Java™ - Garbage Collection and Memory Visualizer 21) GCMVの起動方法についての説明が表示されます。 ISAの「ツール」タブから「IBM Monitoring and Diagnostic Tools for Java™ - Garbage Collection and Memory Visualizer」を選択し、「起動」をクリックします。 GCMVの使用方法および、今回の verbosegc ログの解析については、「6.ISA GCMVの使い方」を確 認してください。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 13 / 19 4. ガイド付きトラブルシューターを使用した問題判別 ~資料解析 -heapdump- ~ 22) 次にheapdumpの解析を行います。 「Analysis indicates heap exhaustion or large object request problems, analyze heapdump files」を選択します。 23) 既にheapdumpファイルは取得済みなので「Heapdump files were collected earlier, start the heapdump analysis」を選択します。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 14 / 19 24) heapdumpの解析方法についての説明が表示されます。 25) MDD4J は既にインストールされているので、「MDD4J 2.0 beta is installed, start the heapdump analysis」を選択します。(実際には MDD4J 3.0も追加されています) ※ MDD4Jが追加されていない場合には、「4.ISA PDハンズオンの準備」を参考に、製品アドオン(IBM Developer Kit for Java 6.0)、ツールアドオンから MDD4Jを追加してください。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 15 / 19 26) 「Memory Dump Diagnostic for Java ツールの起動」 をクリックし、MDD4Jを起動します ファイル選択のダイアログが表示されたら、 「primary dump(Optional)」にケース「OOM」に追加した heapdumpファイルを選択し、"次へ"をクリックします。 ※オプショナルなのでここでは指定しなくても問題ありません。 ※もしここでMDD4Jの起動に失敗する場合には、"問題分析" > (ツール) "Memory Dump diagnostic for Java (MDD4J) version 3.0" より、heapdumpファイルを指定せずに起動してください。 MDD4Jの使用方法および、今回出力された heapdump の解析については、「7.ISA MDD4Jの使い 方」を確認します。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 16 / 19 27) これまでの資料解析をもとに、原因を考察します。 28) 今回はアプリケーションでセッションオブジェクトに格納するデータサイズが大きすぎることが原因で あったため、「Your J2EE application has a memory leak」に該当します。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 17 / 19 28) J2EEアプリケーションに問題がある場合の一般的な対応方法についての説明が表示されます。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 18 / 19 以上で問題判別は終了です。 最後にOutOfMemoryError発生時に出力されたjavacoreファイルを確認します。 5. 補足:javacoreファイルの確認 最後にjavacoreファイルを確認します。 OutOfMemoryError発生時には、"WebContainer : 3"スレッドにて、 OutOfMemoryErrorServlet.java の51行目の doTask() メソッドを実行中であったことが分かりま す。 ※ OutOfMemoryErrorの場合には、必ずしもOOM発生時に実行中のスレッドが原因とは限らないた め注意が必要です。 System Technical Service Center | ISA-5 ISA ガイド付きトラブルシューターを用いた問題分析 19 / 19 0SECTION THREADS subcomponent dump routine NULL ================================= NULL 1XMCURTHDINFO Current Thread Details NULL ---------------------3XMTHREADINFO "WebContainer : 3" TID:0x053A4100, j9thread_t:0x07ABEB7C, state:R, prio=5 3XMTHREADINFO1 (native thread ID:0x1748, native priority:0x5, native policy:UNKNOWN) 4XESTACKTRACE at pd/pro /OutOfMemoryErrorServlet.doTask(OutOfMemoryErrorServlet.java:51) 4XESTACKTRACE at pd/pro /OutOfMemoryErrorServlet.doGet(OutOfMemoryErrorServlet.java:27) 4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:718) 4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:831) 4XESTACKTRACE at com/ibm/ws/webcontainer/servlet /ServletWrapper.service(ServletWrapper.java:1530) 4XESTACKTRACE at com/ibm/ws/webcontainer/servlet /ServletWrapper.handleRequest(ServletWrapper.java:829(Compiled Code)) 4XESTACKTRACE at com/ibm/ws/webcontainer/servlet /ServletWrapper.handleRequest(ServletWrapper.java:458) 4XESTACKTRACE at com/ibm/ws/webcontainer/servlet /ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:175) 4XESTACKTRACE at com/ibm/ws/webcontainer/webapp /WebApp.handleRequest(WebApp.java:3742) 4XESTACKTRACE at com/ibm/ws/webcontainer/webapp /WebGroup.handleRequest(WebGroup.java:276) 4XESTACKTRACE at com/ibm/ws/webcontainer /WebContainer.handleRequest(WebContainer.java:929) 4XESTACKTRACE at com/ibm/ws/webcontainer /WSWebContainer.handleRequest(WSWebContainer.java:1583) まとめ この章では、ISAの「ガイド付きトラブルシューター」機能を用いて、OutOfMemorErrorの問題分析および資 料解析を行いました。