- ベストアンサー
abコマンドでの秒間リクエスト
- 自分のサイトをabコマンドを使用して負荷テストしています。リクエスト数が31と、結構ひどいなと思っています。
- 他のサイトで同様のテストを行った結果、教えてgooトップは秒間25リクエスト、Twitterは秒間13リクエストしか処理できなかった。
- この考え方が間違っているのかどうか、詳しい方に教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
うーん、さっきので通じなかったか…。 まあ、つまりですね。abコマンドの結果の意味を考えて欲しいわけですよ。 "#/sec" として出てくる値の意味は何か、ということを。 これ、単に、リクエスト数を合計時間で割っただけですよね。 ということは、測っているものはサーバの能力ではなくて、あくまで「自分から見たサーバへのアクセス速度」でしかないわけです。 そして、それはRTTや並列数によって大きく影響を受けるわけです。 つまり、この結果は「秒間13リクエストしか捌けない」ではなく、「平均すると秒間13アクセスできた」が正しい。 サーバ自身のリクエスト処理能力を見たいのなら、サーバlocalhostから見なければ性能評価になりませんよ、と。 そういうことを言いたかったのでした。 蛇足になりますが、apacheの並列数は初期状態では意外と少ないので、それを増やさないと十分な性能が出ない可能性があります。
その他の回答 (1)
- beefisdead
- ベストアンサー率63% (92/145)
abの実装を知らないので正確なところは言えませんが、RTTの問題は大きいでしょう。 twitterはサーバが海外にあるので、120ms以上のRTTがかかります。HTTP GETを行うためにはTCPハンドシェイクで二往復が必要なので、一回の処理に最低でも250ms程度はかかります。さらに、裏では何らかのプログラムが動いているので、実際はこれよりもさらに遅延します。 これは、たとえば、接続数が10000個あったとしたら、その10000個すべての接続で同じように起こる遅延です。 したがって、並列数を変えればまた違った結果も出るはずです。 ベンチマークによって何をはかりたいかに寄るのですが、CPUやメモリ等のリソースによるApacheの限界をはかりたいのなら、webサーバのlocalhostから大量の並列リクエスト数で実行するのが正しいベンチマーク方法かと思います。でないと、webサーバとの間のRTTが測定上のボトルネックとなってしまいます。 それが無理なら、並列リクエスト数だけでも多くすべきかと。 あと、ベンチマークソフトを外部のサービスに行うことは、攻撃者と見なされても仕方ないことなので、やめた方が良いですよ、と一般的なアドバイスもしておきます。
補足
回答ありがとうございます。 なるほど勉強になります! 自分が一番気になった部分は、RTTの問題も含め、秒間11リクエストしか捌けないの!?ということです。 twitterも当然負荷分散していると思うんですが、秒間11リクエストしか捌けないなんて、とてもあんな大規模なサービス運営できないと思います。教えてgooもしかりです。yahooやgoogleもおなじです。秒間50も捌けないとabコマンドでは結果として出ます。 この点どう思いますか?? >あと、ベンチマークソフトを外部のサービスに行うことは、攻撃者と見なされても仕方ないことなので、やめた方が良いですよ、と一般的なアドバイスもしておきます。 ごもっともです^^;;;なので一応少な目のリクエストにしてます;
お礼
すいません理解しました;;;; 回答本当にありがとうございました!!!