ダンプの取り方について
こんにちは。
SharePoint サポートの木田です。
今回はプロセス ダンプの取り方について紹介します。
SharePoint サポートでは SharePoint に関連するプロセスの CPU 使用率やメモリ使用率が高い、特定の操作で反応が遅い場合などのお問い合わせを頂くことがあります。この場合、イベント ログや診断ログからは原因が特定できな場合がほとんどで、プロセス内の詳細な状況を調べる必要があるときに有効な情報となるのがプロセス ダンプになります。ダンプを取得する最も多いシナリオとして、サイトにアクセスしようとした際に、なかなかサイトが開かない場合や、反応が返ってこないような状況になります。この場合、SharePoint のサイトを提供している IIS のプロセス (w3wp.exe) のダンプ ファイルが必要となります。今回は IIS のプロセスのダンプを取る方法を例に、ダンプの取得方法について紹介します。
ダンプの取り方はいくつかありますが、主な 2 つの方法について紹介します。
方法 1. タスク マネージャーからダンプを取得
方法 2. ツールを使ってダンプを取得
事前準備
・取得対象のプロセス ID を特定
w3wp.exe プロセスは複数起動しているため、特定の w3wp.exe プロセスに対してダンプを取得するにはプロセス ID を指定する必要があります。その為、事前にプロセス ID の確認が必要となります。
設定手順
1) 現象を確認しているサーバーでタスク マネージャーを起動します。
2) [プロセス] タブを選択し、[名前] 等の列名を右クリックします。展開されたメニューから [コマンドライン] と [PID] を選択します。
3) メモリを消費する w3wp プロセスの [コマンドライン] 列を確認し、 "-ap" 以降に表示されている値より対象の Web アプリケーションを確認します。
今回は対象の Web アプリケーションが "SharePoint - 80" に対してダンプを取得するため、プロセス ID は “22088” となります。
ダンプの取得手順
今回は 2 種類のダンプの取得方法を紹介しますが、方法 1 の方が簡単に実施できますがダンプの出力時に一時的に対象のプロセスの応答が停止します。方法 2 はツールが必要となりますが、プロセスの応答が停止することなくダンプを取得できます。意図的に現象が再現できない現象で、発生頻度が低い場合は方法 1 が有効ですが、現象が再現可能な場合や、特定のタイミングで発生するような場合は方法 2 でダンプを取得するなど状況に応じて使い分けてください。
方法 1 (タスク マネージャー)
1) タスクマ ネージャを起動します。
2) [すべてのユーザーのプロセスを表示] をクリックしてプロセスの一覧から対象の Web アプリケーションのプロセス (w3wp.exe) を確認します。
3) プロセス名を右クリックして [ダンプ ファイルの作成] をクリックします。
4) 「ファイルは正しく作成されました。」メッセージが表示されたらダンプの取得は完了です。
方法 2 (ProcDump ツール)
ダンプ ファイル採取時に継続してユーザー アクセスが可能な、ProcDump ツールを使用した採取方法になります。
事前にツールをダウンロードして、ダンプを取得するサーバーの任意のディレクトリに展開しておきます。
タイトル : ProcDump
アドレス : https://technet.microsoft.com/en-us/sysinternals/dd996900.aspx
1) コマンド プロンプトを管理者権限で起動し、ツールを展開したディレクトリに移動します。
2) 以下のコマンドを実行します
procdump -a -r -ma -accepteula <プロセス ID> <出力先フォルダ>
例)
procdump -a -r -ma -accepteula 22088 C:\dump
※ 例では C:\dump にダンプ ファイルが出力されます。出力サイズは取得対象のプロセスのメモリ使用量と概ね同等になります。空きディスク容量等にご注意ください
※ 初回起動時にはライセンス条項同意画面が表示されます。実行するためには [Agree] をクリックするか、自動的に承諾する場合は -ma の後に上記のように -accepteula オプションを付与してください
3) いくつかのログ出力の後、"Dump 1 complete:" のような内容が表示され、出力先フォルダにダンプ ファイルが出力されます。なお、プロセスの動作はダンプ ファイルの出力中も継続します。
補足事項
※ 1内部処理の推移などを確認するため、複数回のダンプ採取 (できれば 3 回ほど) が有効となります。ダンプを取る間隔は 5 秒間隔くらいが目安です。
※ 2 w3wp.exe のダンプを取得する際に、稀に IIS のタイムアウト値が影響して、ダンプが正常に取得できない場合があります。現象を再現できる、または再現頻度が高い場合は、事前に IIS のタイムアウト値を延ばしてダンプを取得することをお勧めします (ダンプが壊れている場合は、解析が行えない場合があります)。なお、設定時にアプリケーション プールのリサイクルを行うため、現象が発生してから変更すると現象が回避してしまう可能性があるので、現象が発生する前に設定しておく必要があります。また、調査終了後には設定値を元に戻してください。
IIS のタイムアウトの延長方法
設定値は環境に依存しますが、現在一般的にお問い合わせでご案内している設定値は 9000 秒になります。
設定手順
1) 現象を確認しているサーバーでタスク マネージャーを起動します。
2) [プロセス] タブを選択し、[名前] 等の列名を右クリックします。展開されたメニューから [コマンドライン] を選択します。
3) 対象の w3wp プロセスの [コマンドライン] 列を確認し、 "-ap" 以降に表示されている値より対象の Web アプリケーションを確認します。
今回は対象の Web アプリケーションが "SharePoint - 80" に対してダンプを取得するため、プロセス ID は “22088” となります。
4) スタート メニューから [インターネット インフォメーション サービス(IIS)マネージャー] を起動します。
5) 画面左側メニューのサーバー名を展開し、[アプリケーション プール] をクリックします。
6) 手順 3) で確認したアプリケーション プールを右クリックし、メニューから [詳細設定] をクリックします。
7) [プロセス モデル] セクションの [Ping 最大応答時間(秒)] を 9000 に変更し、[OK] をクリックします。
8) 画面右側 [操作] メニューから [リサイクル] をクリックします。