Hitachi Web Server

[目次][用語][索引][前へ][次へ]

4.2.6 モジュールトレースの採取

Webサーバは複数のモジュールから構成され,これらのモジュールは特定のタイミングで実行される複数の関数から構成されています。モジュールトレースとは,モジュールの各関数の実行時及びCGIプログラムの実行時に採取されるトレースのことです。モジュールトレースは,HWSRequestLogディレクティブの指定の有無によって,採取先などの採取方法が変わります。

注※ モジュールには,WebサーバにLoadModuleディレクティブで動的に組み込んで使用する外部モジュールと,httpsd実行ファイルに含まれる内部モジュールとがあります。

<この項の構成>
(1) トレース対象
(2) 採取方法
(3) 採取レベル
(4) トレースフォーマット
(5) 使用方法

(1) トレース対象

モジュールトレースのトレース対象を次に示します。

表4-3 モジュールトレースのトレース対象

トレース対象 トレースの契機
モジュール モジュールは複数の関数から構成されています。これらの関数は,初期化処理とリクエスト対応処理に分類されます。トレースはリクエスト対応処理についての関数に対して採取します。
CGIプログラム CGIプログラム実行時にトレースを採取します。

(2) 採取方法

HWSRequestLogディレクティブを指定していない場合は,ErrorLogディレクティブに指定したファイルに対して,LogLevelディレクティブの指定に従って採取します。

HWSRequestLogディレクティブを指定している場合は,HWSRequestLogディレクティブに指定したファイルに対して,HWSRequestLogTypeディレクティブの指定に従って採取します。

注意事項
ErrorLogディレクティブに指定したファイルに対してログを採取する場合は,バーチャルホスト単位にファイルを分けることができます。HWSRequestLogディレクティブに指定したファイルに対してログを採取する場合は,バーチャルホスト単位にファイルを分けることができません。

(3) 採取レベル

LogLevelディレクティブ又はHWSRequestLogTypeディレクティブの指定によって,採取するモジュールトレースのレベルを変更できます。各レベルで採取するトレースの内容を次に示します。

(a) infoレベル

障害発生の原因となるおそれのある外部モジュール及びCGIプログラムについて採取します。

LogLevelディレクティブにinfoを指定,又はHWSRequestLogTypeディレクティブにmodule-infoを指定した場合に採取します。

(b) debugレベル

infoレベルのほかに,リクエストごとに動作する内部モジュールについてのトレースも採取します。

LogLevelディレクティブにdebugを指定,又はHWSRequestLogTypeディレクティブにmodule-debugを指定した場合に採取します。

(4) トレースフォーマット

モジュールトレースの出力項目は次のとおりです。

なお,以降の記述で「サーバプロセスID」はWindows版の場合「サーバスレッドID」です。

(a) モジュール

(凡例)
△:空白

関数オフセットと関数の対応を次に示します。

表4-4 関数オフセットと関数の対応

関数オフセット 関数名 意味
[0] create_request リクエスト開始処理を実行中
[1] post_read_request リクエスト読み込み後処理を実行中
[2] quick_handler リクエストされたURL変換前処理を実行中
[3] translate_name リクエストされたURLから,実際のファイル名への変換処理実行中
[4] map_to_storage ディスクアクセスを伴わないリクエスト処理を実行中
[5] header_parser リクエストヘッダ解析処理実行中
[6] access_checker 認証済みユーザからリクエストされたURLに対してホスト名,及びIPアドレスによるアクセス権限チェック実行中
[7] check_user_id ユーザIDのチェック処理実行中
[8] auth_checker 認証済みユーザからリクエストされたURLに対してアクセス権限(Require)チェック実行中
[9] type_checker MIMEタイプのチェック処理実行中
[10] fixups リクエスト実行前処理を実行中
[11] insert_filter フィルタ挿入処理を実行中
[12] handler ハンドラを実行中
[13] insert_error_filter エラー応答前処理を実行中
[14] log_transaction ログ出力処理を実行中
[15] error_log エラーログ出力後処理を実行中
[16] get_suexec_identity ユーザ情報取得処理を実行中

(出力例)
 
[Fri Jul 15 17:29:43 2005] [info] hws : module --> (mod_example.c[1])(1864)
[Fri Jul 15 17:29:43 2005] [info] hws : module <-- (mod_example.c[1])(1864)(-1)
 

(凡例)
△:空白

(出力例)
 
[Fri Jul 15 17:29:43 2005] [debug] request.c(69): hws : module --> (mod_alias.c[3])(1864)
[Fri Jul 15 17:29:43 2005] [debug] request.c(69): hws : module <-- (mod_alias.c[3])(1864)(-1)
 
(b) CGIプログラム

コール時
 
[時刻]△[info]△hws△:△cgi△-->△(exec=cgiファイル名称)(argv0=実行プログラム名称)(args=引数 )(サーバプロセスID)(CGIプロセスID)
 
注※ argsによる引数は,GET /cgi-bin/isindex?aaa+bbb+ccc HTTP/1.0のように,=ではなく,+で連結されたクエリーが指定された場合にだけ表示します。

リターン時
 
[時刻]△[info]△hws△:△cgi△<--△(exec=cgiファイル名称)(argv0=実行プログラム名称)(サーバプロセスID)(CGIプロセスID)
 

(凡例)
△:空白

(出力例)
 
[Fri Jul 15 19:48:08 2005] [info] hws : cgi --> (exec=C:/Program Files/Hitachi/httpsd/cgi-bin/isindex)(argv0=isindex)(args=aaa+bbb+ccc)(1784)(1144)
[Fri Jul 15 19:48:08 2005] [info] hws : cgi <-- (exec=C:/Program Files/Hitachi/httpsd/cgi-bin/isindex)(argv0=isindex)(1784)(1144)
 

(5) 使用方法

(a) 使用例

リクエストログに,infoレベルのモジュールトレース,及びリクエストトレースを出力する例を示します。

 
HWSRequestLogType module-info request
HWSRequestLog logs/hwsrequest.log
 
(b) 異常時のトレース例