Hitachi Web Server
Webサーバは複数のモジュール※から構成され,これらのモジュールは特定のタイミングで実行される複数の関数から構成されています。モジュールトレースとは,モジュールの各関数の実行時及びCGIプログラムの実行時に採取されるトレースのことです。モジュールトレースは,HWSRequestLogディレクティブの指定の有無によって,採取先などの採取方法が変わります。
注※ モジュールには,WebサーバにLoadModuleディレクティブで動的に組み込んで使用する外部モジュールと,httpsd実行ファイルに含まれる内部モジュールとがあります。
モジュールトレースのトレース対象を次に示します。
表4-3 モジュールトレースのトレース対象
トレース対象 | トレースの契機 |
---|---|
モジュール | モジュールは複数の関数から構成されています。これらの関数は,初期化処理とリクエスト対応処理に分類されます。トレースはリクエスト対応処理についての関数に対して採取します。 |
CGIプログラム | CGIプログラム実行時にトレースを採取します。 |
HWSRequestLogディレクティブを指定していない場合は,ErrorLogディレクティブに指定したファイルに対して,LogLevelディレクティブの指定に従って採取します。
HWSRequestLogディレクティブを指定している場合は,HWSRequestLogディレクティブに指定したファイルに対して,HWSRequestLogTypeディレクティブの指定に従って採取します。
LogLevelディレクティブ又はHWSRequestLogTypeディレクティブの指定によって,採取するモジュールトレースのレベルを変更できます。各レベルで採取するトレースの内容を次に示します。
障害発生の原因となるおそれのある外部モジュール及びCGIプログラムについて採取します。
LogLevelディレクティブにinfoを指定,又はHWSRequestLogTypeディレクティブにmodule-infoを指定した場合に採取します。
infoレベルのほかに,リクエストごとに動作する内部モジュールについてのトレースも採取します。
LogLevelディレクティブにdebugを指定,又はHWSRequestLogTypeディレクティブにmodule-debugを指定した場合に採取します。
モジュールトレースの出力項目は次のとおりです。
なお,以降の記述で「サーバプロセスID」はWindows版の場合「サーバスレッドID」です。
[時刻]△[info]△hws△:△module△-->△(モジュールファイル名称[関数オフセット])(サーバプロセスID) |
[時刻]△[info]△hws△:△module△<--△(モジュールファイル名称[関数オフセット])(サーバプロセスID)(結果コード) |
関数オフセットと関数の対応を次に示します。
表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) |
[時刻]△[debug]△ファイル名称(行番号):△hws△:△module△-->△(モジュールファイル名称[関数オフセット])(サーバプロセスID) |
[時刻]△[debug]△ファイル名称(行番号):△hws△:△module△<--△(モジュールファイル名称[関数オフセット])(サーバプロセスID)(結果コード) |
[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) |
[時刻]△[info]△hws△:△cgi△-->△(exec=cgiファイル名称)(argv0=実行プログラム名称)(args=引数 ※)(サーバプロセスID)(CGIプロセスID) |
[時刻]△[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) |
リクエストログに,infoレベルのモジュールトレース,及びリクエストトレースを出力する例を示します。
HWSRequestLogType module-info request HWSRequestLog logs/hwsrequest.log |
[Fri Jul 15 10:29:29 2005] [info] hws : module --> (mod_example.c[1])(1800) [Fri Jul 15 10:29:30 2005] [notice] Parent: child process exited with status 3221225477 -- Restarting. |
[Fri Jul 15 19:48:39 2005] [info] hws : cgi --> (exec=C:/Program Files/Hitachi/httpsd/cgi-bin/test-sleep)(argv0=test-sleep)(1800)(2276) [Fri Jul 15 19:48:49 2005] [info] [client 192.168.1.1] Premature end of script headers: test-sleep [Fri Jul 15 19:48:49 2005] [info] hws : cgi <-- (exec=C:/Program Files/Hitachi/httpsd/cgi-bin/test-sleep)(argv0=test-sleep)(1800)(2276) |
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.