コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

負荷のかかる生活

現代はストレス社会なのです

体を壊し、心を壊しと…なんでもかんでも壊れてしまいます。もうボロボロです。巷では、一度壊れてしまったものは二度とは戻らないとも言われています。


人間ってのどうしてこんなに脆いのだろうか。どうしてこんなに弱いのだろうか。


さて、本題に入ります。
今回は Apache Benchというツールを使ってWebサーバの負荷テストをしていきます。俗にストレステストなんて呼ばれるアレをしていこうと思います。人間のストレス測定は簡単にはできないけど、Webサーバのストレステストは簡単にできるんですねえ…。

負荷テストとは、システムが実際の業務に耐えられる処理能力を持っているかどうかを検証するためのテストのことである。システムに対して擬似的に大量アクセスを発生させ、反応を検証することが負荷テストに当たる。

毎度何を言っているかよくわかりませんが、ざっくり言うと503エラー(アクセス過多ページ)の閾値を測定できるようになるツールなんだと思ってます。トラフィックやレスポンス云々の話をしても僕がよくわかんないからそんなイメージでやっていきます。

テストをしよう

テストなんて久しくやった覚えがないけど、世の中にはテストができるツールというものがあるらしいので使ってみることにしました。今回使用するツールは以前に導入したApacheに入っているであろうAB(Apache Bench)を使って負荷テストなるものをします。これでテストをすると自分の持ってるWebサーバがどれだけの負荷に耐えられるかみたいなことがざっくりわかりるそうです。

Apacheがあれば多分abコマンドから使えるであろうツールなので使っていきます。今まで使ってこなかったApacheが今になって大活躍だ。

操作方法は多分ここにあるのを参照すれば使えるんだと思います(未検証)。
ab - Apache HTTP server benchmarking tool - Apache HTTP Server Version 2.4


とりあえずで利用したいときは
ab -n リクエスト数 -c 同時接続数 http://localhost/
だそうです。

例えば
ab -n 100 -c 10 URL
だったら、10人が100回ほどF5アタックをしているイメージだと思われます。例えが悪すぎますね。


実際に打ち込んでみるとこんな画面が出てきます。

Server Software: Apache
Server Hostname: localhost
Server Port: 80

Document Path: /
Document Length: **** bytes

Concurrency Level: 10
Time taken for tests: 0.*** seconds
Complete requests: 10
Failed requests: 0
Total transferred: ****0 bytes
HTML transferred: ****0 bytes
Requests per second: ****.** [#/sec] (mean)
Time per request: *.000 [ms] (mean)
Time per request: *.000 [ms] (mean, across all concurrent requests)
Transfer rate: ***.** [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: * * *.* * *
Processing: * * *.* * *
Waiting: * * *.* * *
Total: * * *.* * *

Percentage of the requests served within a certain time (ms)
50% *
66% *
75% *
80% *
90% *
95% *
98% *
99% *
100% * (longest request)

ざっと調べるには、ここを見ていけばいいっぽいです。

Complete requests: 10
Failed requests: 0

  • nや-cの値を増やしていって、ここのリクエスト(Failed requests)が「0」でなくなる時がWebサーバの限界らしいです。


そんな感じでサーバのストレス耐性がわかるらしいですよ。
人間もこんな風にコマンド一つでストレス耐性がわかるようになったら便利なのにね(ディストピア的発想)。