仕事でパフォーマンス・チューニングを依頼されることが多いのですが、現状のパフォーマンスを知るために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]