akishin999の日記

調べた事などを書いて行きます。

ab コマンドで VirtualHost をテストする

Apache の ab コマンド(Apache Bench) ってリクエストヘッダ指定できたんですね。
これで Host ヘッダ送ってやると、DNS や /etc/hosts を設定してなくても VirtualHost に対して負荷テストをかけることができます。

$ ab -H 'Host: akishin.example.com' -n 1000 -c 5 http://192.0.2.3/

こんな感じ。

まぁ別に /etc/hosts ファイル書けばいいっちゃいいんですが、ab コマンド単体で気楽に実行できるのは嬉しいな、という事で。
今までずっと hosts に書いてたんで、この方法を初めて知った時はちょっと感動しました。

上手く行かない場合など、実際にどんなリクエストヘッダが送信されているかを確認するには、 nc コマンドがお手軽でオススメです。

適当なサーバ(80番ポートが空いている奴)で、nc コマンドで 80 番ポートを LISTEN します。

# nc -l 80 -k -w 1

この状態で上のように ab コマンドを実行すると、以下のようにリクエストヘッダが表示されます。

GET / HTTP/1.0
Host: akishin.example.com
User-Agent: ApacheBench/2.3
Accept: */*

意図した VirtualHost が実行されていないような場合はこんな感じで実際に飛んでいる Host ヘッダの内容を確認してみると良いです。