Go for it!

モーターサイクルと自転車とキャンプの日々。

Apacheのレスポンス・タイムをマイクロ秒単位で記録する

仕事でパフォーマンス・チューニングを依頼されることが多いのですが、現状のパフォーマンスを知るためにApacheのログにレスポンス・タイム(リクエストを受け手からレスポンスするまで)を記録するようにしてみました。

余談ですが、アプリケーション内で使用しているデータベース、メールサーバ、ファイルシステムなどの各コンポーネントの実行時間は、アプリケーションで頑張って取得する必要があります。

DTraceを使うと解りやすく取れるのか…?

レスポンスタイムを細かい粒度で知るにはLogFormatディレクティブに%Dを含める。これにより、マイクロ秒単位でレスポンスタイムがログに出力される。

例:

LogFormat "%h %t \"%r\" %D" resptime
CustomLog logs/resptime_log resptime

こんな風に出る。

xxx.xxx.xxx.xxx [17/Jul/2009:11:04:39 +0900] "GET /wiki/image/help.png HTTP/1.1" 998
xxx.xxx.xxx.xxx [17/Jul/2009:11:04:39 +0900] "GET /wiki/image/rss.png HTTP/1.1" 1083
xxx.xxx.xxx.xxx [17/Jul/2009:11:04:39 +0900] "GET /wiki/image/file.png HTTP/1.1" 5155
xxx.xxx.xxx.xxx [17/Jul/2009:11:04:39 +0900] "GET /wiki/image/backup.png HTTP/1.1" 13477

個人的にはミリ秒単位で十分な精度なのですが、精度が上がる分には問題なし。

[ad#text_wide]