カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

サーバの応答時間を定点観測したことありますか?

あなたが運用しているサーバ・サービス、常に同じ速さで表示・応答できてますか?「常に」というとさすがに厳しいかもしれません。ただ、ちゃんと追って把握できていますか?という話し。

JavaScriptを書いたり、フロントエンドの作業をしていると、レスポンス・タイムってかなり気になったりします。レンダリングって遅いときは遅いですから。または大きな写真を投稿した場合とかも。広告もそうですねぇ。

その場で確認するだけならFirebugとか使えばよいわけですが、定期的に観測した場合とかもあるわけです。
インフラ周りのことでピーク時にレスポンス悪くなってないかと気になるときとか。

そういうときに便利なコマンドが「http_ping」です。

言うより易し。公式サイトに載ってるサンプルを見てみましょう。

% http_ping http://www.example.com/
7816 bytes from http://www.example.com/: 246.602 ms (9.923c/23.074r/213.605d)
7816 bytes from http://www.example.com/: 189.997 ms (11.619c/22.971r/155.407d)
7816 bytes from http://www.example.com/: 190.463 ms (8.994c/25.091r/156.378d)
7816 bytes from http://www.example.com/: 190.07 ms (9.234c/23.9r/156.936d)
7816 bytes from http://www.example.com/: 190.706 ms (10.142c/46.579r/133.985d)
^C
http://www.example.com/ http_ping statistics ---
5 fetches started, 5 completed (100%), 0 failures (0%), 0 timeouts (0%)
total min/avg/max = 189.997/201.568/246.602 ms
connect min/avg/max = 8.994/9.9824/11.619 ms
response min/avg/max = 22.971/28.323/46.579 ms
data min/avg/max = 133.985/163.262/213.605 ms

http_pingというコマンドを使って、「http://www.example.com/」に対して、リクエストを5回送っています。それでウェブサーバ接続にどれくらい時間かかったとか、データ受信、応答にそれぞれどれほど処理時間かかったというのをさらっと出してくれるという代物です。

インストールして、使ってみる

インストールはソースからコンパイルして、インストールですね。特に難しいことはありません。

% wget http://www.acme.com/software/http_ping/http_ping_29jun2005.tar.gz
% tar xvzf http_ping_29jun2005.tar.gz
% cd http_ping
% make
# make install

こんな感じでさっくり。

オプションもいくつかありますが、試行回数(-c)とかプロキシ(-p)あたりは覚えておいてもよいでしょうか。

% http_ping -c 1 http://www.example.com/
% http_ping -c 1 -p proxy.com:8080 http://www.example.com/

必要であれば、「grep total」とかしてその行だけファイルに出力してもよいでしょうし、メールしてもよいかもしれません。「grep -A 3 total」とかオプションつけるのもよいでしょうね。

終わりに

個人的には、cron, grep, awkあたりと組み合わせてファイル出力して、Excelで扱えるようにするのが便利かなーと思ったりします。もう少し出力される形式が処理しやすい形だと整形しやすいのですが、まぁ贅沢は言えないでしょう。
知っておいて損はないかなと思ったので、ちょっと書いてみました。