自宅サーバー(Xeon E5-2670)をApache Benchでどれだけのアクセス数に耐えられるかテストしてみた。

このページを読むのに必要な知識

・テストするパソコンでApacheを実装している
(Webサーバに実装されている必要はない)

・簡単なコマンドライン操作(すごく簡単です)

ウマ
ウマ

こんばんは、運営者のウマです。
最近になって1日のPV数が1,000を超えるようになりました。
皆様ありがとうございます…

 
 

ウマ
ウマ

そこで!
自分の自宅サーバーはどれほどのアクセス数に耐えられるのか?
テストしてみたくなりました。

 
 

なぜABを使うのかというと、Load impactなどウェブ上だけで測定できるものでは、ウマが理解できなかったためです(馬だけに馬鹿)。

Apache

ウマ
ウマ

では早速はじめていきましょう。
今回使うのは「Apache」で実装されている「Apache Bench(ab.exe)」
を使用していきます。

 
 

ウマ
ウマ

おっとと、ボクの環境について書くのを忘れていました。

 
 

ウマのサーバー環境

・Windows Server 2016 Essentials
・Intel Xeon CPU E5-2670 @2.60GHz
・ECC Registered Memory 12GB
・SASHDD 450GBx4(Raid 1)
・1000ギガビット・イーサネット

ウマ
ウマ

と、言えるのはこれくらいですかね。
次は少しだけApache Benchについて解説します。

 
 

Apache Bench?

このApache Benchというものは、ウェブサイトを公開する際に必要となってくるApacheに同梱されています。
これは”Webサーバの性能が、ある程度分かる”ソフトウェアになっています。

今回は、Windows環境でおこなっていきます。参考にする方は手順通りにやっていけば成功するはずなので、挑戦してみましょう。

※要注意&警告
自分のサーバー以外では絶対にやらないようにしましょう。
他人のサーバーに負荷を掛けた場合、DOS攻撃になり、最悪罪に問われます。(偽計業務妨害罪や威力業務妨害)

普通はユーザーごとにリクエスト上限などが設定されており、それを超えるとアクセス制限、などが設定されている(はず)

ちょっと実行前の準備(手順)

ウマ
ウマ

まずはApacheがインストールされたフォルダに行ってください。
そこまでたどり着いたら、”bin”にアクセスしてください。

 
 

ウマ
ウマ

次はパンくずリスト状になっている画像の部分を”bin”の上で右クリックを押し、
”アドレスをテキストとしてコピー”を選択します。

 
 

ウマ
ウマ

次はWindowsのコマンドライン(コマンドプロンプト)を開きます。
Win(Windowsキー)+Rを押して、”cmd”と入れてエンターまたはOKを押します。

 
 

ウマ
ウマ

そうすると、このようなコマンドラインが出てきます。

 
 

ab.exeを実行する(本番)

ウマ
ウマ

いよいよ本番です。
キーとなるファイル”ab.exe”ですが、このままクリックしても動作はしません。
なので、コマンドラインで操作が必要になります。

 
 

まずは、ab.exeがあるディレクトリにコマンドラインでアクセスが必要なので、
以下のコマンドを実行していきます。

1.”cd (Ctrl+Vで貼り付ける)”

説明:
cdというコマンドは、指定したフォルダに行く、というコマンドです。
※ダブルクォートはいりません。

2.”ab.exe -n 10 -c 10 http://あなたのドメイン/:80”

ボクの場合サーバーはローカル環境にあるので、
”ab.exe -n 10 -c 10 http://localhost/:80”
となります。

説明:
-n:リクエスト数を数値で指定
-c:同時接続数を数値で指定

今回は、-nでリクエスト数を10回、-cで同時接続数を10人に指定しました。
このままエンターを押して実行します。

結果(恐るべしXeon)

ウマ
ウマ

どうでしょうか?できましたか?
ここから更に負荷を掛けていきます。
まずは、この赤矢印に注目です。

 
 

ウマ
ウマ

この”Failed requests”が1になれば、サーバーの限界です。
なぜならば、リクエストを処理しきれていないからです。

 
 

ウマ
ウマ

それと、Requests per secondにも注目です。
2497.50[#/sec]
となっています。

 
 

ウマ
ウマ

簡単に言うと”1秒間に処理できる数”を表しています
これの場合、1秒間に2497リクエストを処理できることになります。

 
 

ウマ
ウマ

え???

 
 

さらに負荷を掛ける

ウマ
ウマ

次は「50人が同時接続し、1人当たり、2リクエストした場合」
を想定してテストしてみましょう。

 
 

”ab.exe -n 100(1人当たり2リクエストなので50×2) -c 50(50人) http://あなたのドメイン/:80”

結果:成功

ウマ
ウマ

当たり前ですよね。
Xeonですもんね…次はこれの2倍をテストします。

 
 

”ab.exe -n 200(1人当たり2リクエストなので100×2) -c 100(100人) http://あなたのドメイン/:80”

結果:成功

ウマ
ウマ

まだ行けそうですかね。
もう2倍してみます。

 
 

”ab.exe -n 400(1人当たり2リクエストなので200×2) -c 200(200人) http://あなたのドメイン/:80”

結果:成功

ウマ
ウマ

むむむ…やはり手強いですね…
さらに2倍です。

 
 

”ab.exe -n 800(1人当たり2リクエストなので400×2) -c 400(400人) http://あなたのドメイン/:80”

結果:拒否されました

ウマ
ウマ

リクエストが多すぎたせいか、拒否されてしまいました。(Webサーバが起動中というのもある)
でも、これで数百人が接続しても大丈夫なサーバーということがわかりました。

 
 

(そんなに接続するわけないけど…)

ウマ
ウマ

Apacheを実装している方であれば誰でもできると思うので、
一度お試しください!!!

 
 

コメントを残す

メールアドレスが公開されることはありません。