hibomaのはてなダイアリー このページをアンテナに追加 RSSフィード

 | 

2009::01::19

雑記

Web屋のネタ帳 - Apacheのログ出力に追加しておいたほうがいい(かもしれない)設定


%D リクエストを処理するのにかかった時間、マイクロ秒単位

「あるページだけが異様に重い気がするんだけど?」といった場合に体感スピードではなくその正確な値を得ることができる。純粋にWebアプリ的な処理時間であってネットワーク的な遅延時間などはこれじゃ取れないけど。なお、「%T リクエストを扱うのにかかった時間、秒単位」というのもあるんだが、「処理するのにかかった時間」と「扱うのにかかった時間」がどう違うのかわからん(笑)。いずれにせよ秒単位よりはマイクロ秒単位のほうがいいだろう。

  • %T ... リクエストを扱うのにかかった時間、秒単位
  • %D ... リクエストを処理するのにかかった時間、マイクロ秒単位

ということなので、%Tと%Dで精度以外に何か違うのか気になったので調べてみた。

結論としてマニュアル日本語訳にブレがあるだけだと分かった。

%Tも%Dも apr_time_now() - r->request_time から算出していて、返す精度が違うだけ。


// httpd-2.0.63/modules/loggers/mod_log_config.c の冒頭のコメント部分

// たぶんここを訳してる

* %...T: the time taken to serve the request, in seconds.

* %...D: the time taken to serve the request, in micro seconds.

// httpd-2.0.63/modules/loggers/mod_log_config.c
// 実際に算出してる箇所のソース
// apr_time_sec()があるかないかの違い

static const char *log_request_duration(request_rec *r, char *a)
{
    apr_time_t duration = apr_time_now() - r->request_time;
    return apr_psprintf(r->pool, "%" APR_TIME_T_FMT, apr_time_sec(duration));
}

static const char *log_request_duration_microseconds(request_rec *r, char *a)
{
    return apr_psprintf(r->pool, "%" APR_TIME_T_FMT,
                        (apr_time_now() - r->request_time));
}

まあつまり、たまにはapacheソース眺めてみるのも悪くないんじゃないかということで。


(2.0.63のソースになってるけど、2.2.11でも同じだった)

naonao 2010/09/02 19:38 検索でここにたどり着きました。
違いが解り大変助かりました。m(__)m

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hiboma/20090119/1232362100
 |