4.2.10 内部トレースの採取(hwstraceinfoコマンド)
アプリケーションプログラムの実行時やリクエスト受け取り時など,システムで発生した事象は内部トレースとして採取されています。内部トレースは,共有メモリにいったん出力され,その後ディレクティブの指定やコマンドによって,ファイルに出力されます。
(1) トレース情報の採取
Webサーバの各種事象発生を契機に内部トレースが共有メモリに採取されます。共有メモリのメモリ識別子は,HWSTraceIdFileディレクティブに指定したファイルに格納されます。
(2) ファイルへの出力方法
共有メモリに採取された内部トレースは,サーバプロセスの異常終了時またはhwstraceinfoコマンドの実行によって,ファイルに出力されます。サーバプロセスが異常終了した場合は,HWSTraceLogFileディレクティブで指定したファイルに出力されます。
hwstraceinfoコマンドでは,共有メモリのメモリ識別子,出力先のファイル名を指定します。hwstraceinfoコマンドは,UNIX版の場合,Userディレクティブで指定したユーザまたはスーパーユーザだけが実行できます。また,Windows版の場合,管理者権限を持つユーザだけが実行できます。
内部トレースの出力ファイルサイズは次のとおりです。
- UNIX版の場合
-
- prefork MPMを使用している場合
-
ps -eflコマンドの出力サイズ+vmstatコマンドの出力サイズ+ipcs -aコマンドの出力サイズ+7KB×MaxClient値
- worker MPMを使用している場合
-
ps -eflコマンドの出力サイズ+vmstatコマンドの出力サイズ+ipcs -aコマンドの出力サイズ+2KB×総サーバスレッド数(ServerLimit値×ThreadLimit値)
- Windows版の場合
-
7KB×ThreadPerChild値
(3) hwstraceinfoコマンド
hwstraceinfoコマンドの指定方法を説明します。
(a) 形式
hwstraceinfo -i 共有メモリ識別子 {-l ファイル名|-r}
(b) オペランド
-
-i 共有メモリ識別子
HWSTraceIdFileディレクティブで指定したファイルに出力されている共有メモリ識別子を指定します。
-
-l ファイル名
-iで指定した共有メモリ識別子に該当するトレースを出力するファイルを指定します。
-
-r
-iで指定した共有メモリ識別子に割り当てられている共有メモリを解放します。UNIX版では,Webサーバが終了してもトレース用の共有メモリは残ります。残った共有メモリを解放するためにこのオペランドを使用します。Windows版では,Webサーバ終了時にトレース用の共有メモリは解放されますので,このオペランドは提供していません。
(c) 使用例
共有メモリ識別子1800_1133780652_0に該当するトレースをtraceinfo.logファイルに出力する例を示します。
hwstraceinfo -i 1800_1133780652_0 -l traceinfo.log
(4) 共有メモリの解放および再起動時の注意(UNIX版の場合)
Webサーバが終了しても,トレース情報を残すために共有メモリは解放しません。また,Webサーバを再起動する場合は,共有メモリが再利用されます。
Webサーバを停止したあとに起動した場合は,HWSTraceIdFileディレクティブに指定したファイルの値を基に,いったん共有メモリを解放して,再度確保します。ただし,次のような場合は,以前使用していた共有メモリが解放できなくなりますので,注意してください。
-
同一ユーザで再起動していない(UserディレクティブまたはGroupディレクティブの値が変更されている)
-
HWSTraceIdFileディレクティブの値を変更している
-
HWSTraceIdFileディレクティブで指定していたファイルが消去されている
共有メモリを解放する場合は,-rを指定したhwstraceinfoコマンドを実行してください。