親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

Apache Benchによる手軽な負荷テスト


サイト運営をしていると、流入が増えた時に備えて負荷テストを実施したいことがありますよね。
どれくらいの人数のユーザがどれくらい同時に接続できるのか試したいですよね。

そんな時に便利なのがApache Benchによるabコマンドです。
Apache Benchとは、サーバの負荷テストでよく使用されるツールで、パラメータの指定は多少厄介ですが簡単にコマンドを入力するだけなので非常に簡単に扱えます。

早速例ですが、例えば「http://example.com」というサイトがあった場合に、
100ユーザが同時に接続した場合の負荷テストをしたい、ということがあった場合、下記のコマンドだけで十分です。

ab -n 100 -c 100 http://example.com

をターミナルでコマンド入力すればテストができます。

  • nはリクエストの総数、-cは同時接続数になります。

「リクエストの総数 ≧ 同時接続数」の関係で設定されない場合はエラーが出ます。

パフォーマンスを図る指標としては、
「Time per request(mean, across all concurrent requests)」
の値を見ましょう。(他にも色々ありますが、私はこの数値ばかり見ています。)
この数値は1リクエストあたりにかかる時間を表しており、
この時間が長いほどサイトを開いた時に時間がかかることになります。

かなり大規模なサイトでなければ、同時アクセス数も100前後で耐えられれば十分なので上記のコマンドで問題なければ大丈夫だと思いますが、他の例として、100ユーザが同時に2リクエストを送信するパターンもやってみましょう。

ab -n 200 -c 100 http://example.com

なんで200なの?と思われるかもしれませんが、100ユーザが2リクエストを遅れば100×2で200になりますよね。
あとは負荷が気になるページなどを指定して試してみるといいと思います。

数値が大きすぎるとサーバに大きな負荷がかかり、Dos攻撃の原因になります。
実験的に試す時は、数値を大きくしすぎないように注意しましょう。


イラスト図解式 この一冊で全部わかるサーバーの基本

イラスト図解式 この一冊で全部わかるサーバーの基本

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

  • 作者: 安井真伸,横川和哉,ひろせまさあき,伊藤直也,田中慎司,勝見祐己
  • 出版社/メーカー: 技術評論社
  • 発売日: 2008/08/07
  • メディア: 単行本(ソフトカバー)
  • 購入: 133人 クリック: 2,270回
  • この商品を含むブログ (288件) を見る
28日で即戦力!  サーバ技術者養成講座[改訂3版]

28日で即戦力! サーバ技術者養成講座[改訂3版]