4.2.6 モジュールトレースの採取
Webサーバは複数のモジュール※から構成され,これらのモジュールは特定のタイミングで実行される複数の関数から構成されています。モジュールトレースとは,モジュールの各関数の実行時およびCGIプログラムの実行時に採取されるトレースのことです。モジュールトレースは,HWSRequestLogディレクティブの指定の有無によって,採取先などの採取方法が変わります。
注※ モジュールには,WebサーバにLoadModuleディレクティブで動的に組み込んで使用する外部モジュールと,httpsd実行ファイルに含まれる内部モジュールとがあります。
- 〈この項の構成〉
(1) トレース対象
モジュールトレースのトレース対象を次に示します。
トレース対象 |
トレースの契機 |
---|---|
モジュール |
モジュールは複数の関数から構成されています。これらの関数は,初期化処理とリクエスト対応処理に分類されます。トレースはリクエスト対応処理についての関数に対して採取します。 |
CGIプログラム |
CGIプログラム実行時にトレースを採取します。 |
(2) 採取方法
HWSRequestLogディレクティブを指定していない場合は,ErrorLogディレクティブに指定したファイルに対して,LogLevelディレクティブの指定に従って採取します。
HWSRequestLogディレクティブを指定している場合は,HWSRequestLogディレクティブに指定したファイルに対して,HWSRequestLogTypeディレクティブの指定に従って採取します。
- 注意事項
-
ErrorLogディレクティブに指定したファイルに対してログを採取する場合は,バーチャルホスト単位にファイルを分けることができます。HWSRequestLogディレクティブに指定したファイルに対してログを採取する場合は,バーチャルホスト単位にファイルを分けることができません。
(3) 採取レベル
LogLevelディレクティブまたはHWSRequestLogTypeディレクティブの指定によって,採取するモジュールトレースのレベルを変更できます。各レベルで採取するトレースの内容を次に示します。
(4) トレースフォーマット
モジュールトレースの出力項目は次のとおりです。
なお,以降の記述で「サーバプロセスID」となっている部分はUNIX版でprefork MPMを使用している場合のフォーマットであり,UNIX版のworker MPMでは「サーバプロセスID:サーバスレッドID」,Windows版の場合「サーバスレッドID」です。
(a) モジュール
-
infoレベルで出力される場合
- コール時
[時刻]△(サーバプロセスID)△[info]△hws△:△module△-->△(モジュールファイル名称[関数オフセット])
- リターン時
[時刻]△(サーバプロセスID)△[info]△hws△:△module△<--△(モジュールファイル名称[関数オフセット])(結果コード)
(凡例)
△:空白
表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
ユーザ情報取得処理を実行中
[17]
pre_read_request
リクエスト読み込み前処理を実行中
[18]
access_checker_ex
追加のアクセス権限チェック実行中
[Fri Jul 15 17:29:43 2005] (1864) [info] hws : module --> (mod_example.c[1]) [Fri Jul 15 17:29:43 2005] (1864) [info] hws : module <-- (mod_example.c[1])(-1)
-
debugレベルで出力される場合
- コール時
[時刻]△(サーバプロセスID)△[debug]△ファイル名称(行番号):△hws△:△module△-->△(モジュールファイル名称[関数オフセット])
- リターン時
[時刻]△(サーバプロセスID)△[debug]△ファイル名称(行番号):△hws△:△module△<--△(モジュールファイル名称[関数オフセット])(結果コード)
- (凡例)
-
△:空白
- (出力例)
[Fri Jul 15 17:29:43 2005] (1864) [debug] request.c(69): hws : module --> (mod_alias.c[3]) [Fri Jul 15 17:29:43 2005] (1864) [debug] request.c(69): hws : module <-- (mod_alias.c[3])(-1)
(b) CGIプログラム
-
infoレベルで出力される場合
- コール時
[時刻]△(サーバプロセスID)△[info]△hws△:△cgi△-->△(exec=cgiファイル名称)(argv0=実行プログラム名称)(args=引数 ※)(CGIプロセスID)
注※ argsによる引数は,GET /cgi-bin/isindex?aaa+bbb+ccc HTTP/1.0のように,=ではなく,+で連結されたクエリーが指定された場合にだけ表示します。
- リターン時
[時刻]△(サーバプロセスID)△[info]△hws△:△cgi△<--△(exec=cgiファイル名称)(argv0=実行プログラム名称)(CGIプロセスID)
- (凡例)
-
△:空白
- (出力例)
[Fri Jul 15 19:48:08 2012] (1784) [info] hws : cgi --> (exec=<Application Serverのインストールディレクトリ>/httpsd/cgi-bin/isindex)(argv0=isindex)(args=aaa+bbb+ccc)(1144) [Fri Jul 15 19:48:08 2012] (1784) [info] hws : cgi <-- (exec=<Application Serverのインストールディレクトリ>/httpsd/cgi-bin/isindex)(argv0=isindex)(1144)
(5) 使用方法
(a) 使用例
リクエストログに,infoレベルのモジュールトレースおよびリクエストトレースを出力する例を示します。
HWSRequestLogType module-info request HWSRequestLog logs/hwsrequest.log