ApacheBenchなる便利な測定ツールを知ったので、ちょうど懸案になっていた「さくらVPS」と「IIJ GIOクラウド」のベンチマークをとってみました。

さらに「Apache」と「nginx」も比較してみたので、これらの考察です。

結論からいうと、

 

  1. スケーラビリティを捨ててコストパフォーマンス優先の「さくらVPS」が良さそう
  2. よく言われているようにリクエスト数が多いほどnginxのほうが良さそう

 

です。

もちろん前提条件と誤差は含むので、今回の結論は将来的に変わる可能性はあります。

 

◆前提条件

  1. ApacheBenchはローカルPCから実行
  2. ホスト名はローカルPCのhostsで名前解決(DNSレスポンスの違いを排除)
  3. サブドメイン3文字でホスト名を区別(コンテンツ内のURL長を等しく)
  4. ネット環境は光100Mbps
  5. 同時接続100で合計400リクエスト実行[$ ab -n 400 -c 100 http://???.example.com/]
  6. 対象サービスは次の4パターン
    • さくらVPS 2G/nginx
    • 同/Apache
    • IIJ GIOクラウドV160/Apache
    • 同V10/Apache
  7. ベンチマーク対象コンテンツはPHPで700KB弱
  8. DB処理は無いがファイルOPEN(READのみ)と文字列処理あり
  9. Apache、nginxともに意図的なチューニング無し
  10. バージョン(とくにApache)に意図無し
  11. nginxはProxy構成
  12. nginxは仮想3コアにチューニング済み

 

◆ベンチマーク結果[さくらVPS 対 IIJ GIOクラウド]


※クリックで拡大

 

◆考察

上記結果の青がベスト値、赤がワースト値です。

総括は一目瞭然で、さくらVPS[2Gプラン]のApacheが圧倒的に青一色です。IIJ GIOクラウドのV10は真っ赤です。

特 筆すべきは月額34,000円(キャプチャの①)もするIIJ GIOのV160が同V10と比べてCPUとメモリが16倍(②)、帯域も約7倍(③)の割に1秒あたりのリクエスト数(⑧)/総転送レート(⑨)ともに 約2倍程度でしかない点でしょうか。費用は8倍以上なのに・・・

さくらのVPSが圧倒的にお得

つまり、現行選択可能な最 高スペック(V240は選択不可でしたのでV160)を以てしても、さくらVPS 2Gプランのほうがコスト&パフォーマンスともに断然すぐれているので、30分程度でスケールアップ/ダウンが可能なIIJのGIOクラウドですが、私が 必要な用途向きではないことがわかったのが、とても収穫です。

また、同時接続100/合計400リクエスト(この理由は後述)におけるさくらVPSに限定した比較では、設定が意図的に有利なはずのnginxよりApacheに軍配が上がっています。同時接続100/合計1000リクエストは別途まとめます。

帯域がボトルネックではない

さくらVPS/Apache、V160、V10それぞれ転送レートが9,300、8,300、3,700Kbyte/sec(⑨)ですのでbps換算(byte→bitで8倍)だと72Mbps、64Mbps、29Mbpsです。

こ の帯域が結果を左右しているわけではなさそうです。

それは、こちらのローカル環境が100Mbpsとはいえ、さくらVPSとIIJ V160では共用100Mbpsと専有200Mbpsの理論値と実測値(72Mbpsと64Mbps)が逆転している点、そもそもこの転送レート(⑨) は、

総HTML転送量(⑦と⑧の間の数値) ÷ 総実行時間(⑤と⑥の間の数値)

という単純計算と思われるためです。

つまり、V10は理論値30Mbpsに対して実効29Mbps出ているのでHTTPリクエストの処理性能としてバランスがとれている、または帯域がボトルネックという可能性を含みますが、いずれにしてもV160(理論値200Mbpsに対して実効64Mbps)がさくらVPS 2Gに帯域(理論値は共有100Mbpsに対して実効72Mbps)ほかの結果が劣っているわけです。

ま た、今回同時接続100/合計400リクエストで比較したのは、合計1000リクエストの途中(それが400リクエスト)でIIJ GIOがほぼフリーズしてしまい、ログイン済みのSSHコンソール操作はおろか、新たにログインも不可となり、コンパネから強制リブートが必要だったため です。

アテにならないIIJ GIOクラウドのスケーラビリティ

GIOクラウドのCPU換算単位であるICUというのも 意味不明なものの、Apacheのマルチコア対応設定が必要(16ICUが活かせていない)なのか?とも考えましたが、SSHログインすら不可となってし まったことと、さくらVPSも仮想3コア対応の設定は施していない(そもそもそういうジャストな設定があるのかもよくわかりません)ので、GIOクラウド のスペック値(同サービス内の相対比較および他社サービスとの相対比較)はWebサーバ用途では期待してはいけないようです。
もしかすると、さくらが圧倒的にすぐれているのかも知れませんが、現時点ではこれ以上の比較対象がないためわかりません。

 

◆課題

今回の100/400テストは数ラウンドずつ実行(結果はとくに意図なく採用)しているものの、当然若干のブレはあるので、ラウンド数を増やして再検証したい。

結果を簡単に比較できるようなエクセルチャートを作ろうかと。

また、純粋なベンチマークも検証しておきたい。UnixBenchが良いのかな?