Hitachi

Cosminexus V11 アプリケーションサーバ Cosminexus HTTP Server


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

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

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

〈この項の構成〉

(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」となっている部分は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