VPSのレンタルサーバを利用してWEBサーバ(Apache)が最大何件まで同時に処理できるのか測ってみた


掲載日:2020年12月31日



INFOMARTION > VPSのレンタルサーバを利用してWEBサーバ(Apache)が最大何件まで同時に処理できるのか測ってみた

概要

WEBサーバ(Apache)が最大何件まで同時に処理できるのか測ってみたので、その結果を書きたいと思います。さくらのVPSサーバをレンタルしてWEBサーバを構築したのですが、実際に最大リクエスト何件までさばけるのか気になったので調査しました。VPSサーバのスペックを選定する参考にしてみてください。

今回はWEB(Apache)のみで測定しましたが、WEB/APサーバ(Apache、Tomcat)で測定した場合の記事は以下となりますので参考にしてみてください。

VPSのレンタルサーバを利用してWEB/APサーバ(Apache、Tomcat)が最大何件まで同時に処理できるのか測ってみた

さくらのVPSさくらのVPS

さくらのVPSさくらのVPS

目次

  1. 測定
  2. 測定結果詳細
  3. まとめ

1. 測定

1-1. 測定環境

以下が今回測定する環境となります。

■レンタルサーバ情報

レンタルサーバさくらのVPS
CPU2コア
メモリ1GB
SSD50GB

■サーバ情報

OSCentOS 7.4 64bit
WEBサーバApache HTTP Server 2.4.41

1-2. 測定方法

JMeterを使って測定したいと思います。JMeterとはJavaで動作する負荷測定ツールです。このツールを利用すると同時にリクエストが大量に投げられます。JMeterを使って同時リクエスト数を徐々に上げていき、処理がさばけなくなるまで負荷を上げていきたいと思います。

具体的な条件としては以下です。

  • リクエスト間隔・・・5秒
  • 同時リクエスト数・・・10件(徐々に10件ずつ増やして測定)
  • 測定時間・・・60秒

測定時間が「60秒」、リクエスト間隔「5秒」なので12回(60÷5)繰り返しアクセスをしたいと思います。

1-3. 測定結果

結局、どのスペックのサーバだと、どれくらい処理できるのかといった結論が気になる人も多いと思うので先に結論を記載したいと思います。

CPU:2コア
メモリ:1GB
SSD:50GB
同時リクエスト120件まで処理が可能

今回測定した結果から、上記となりました。上記の結果から推測すると以下の通りになるのではと思います。サーバのスペックを選ぶ際の基準としてみてください。

CPU:1コア
メモリ:512MB
SSD:25GB
同時リクエスト60件まで処理が可能
CPU:2コア
メモリ:1GB
SSD:50GB
同時リクエスト120件まで処理が可能
CPU:3コア
メモリ:2GB
SSD:100GB
同時リクエスト240件まで処理が可能

上記はさくらのVPSに存在するスペックベースに記載していますが、さくらのVPSの最低スペックのプラン(CPU:1コア、メモリ:512MB、SSD:25GB)でも60人程度の規模のシステムなら問題なく動作することが分かりました。

さくらのVPSさくらのVPS

さくらのVPSさくらのVPS

2. 測定結果詳細

先に測定結果を記載させていただきましたが、どの様な結果から測定結果を記載しているか気になる方は、これから記載する測定結果詳細の確認もしてみてください。

2-1. WEBサーバ(Apache)測定

HTMLで作成されたページに対して繰り返しリクエストを投げました。PHPの処理やJavaScriptの複雑な処理がないシンプルなページとなります。

測定すると以下の様な結果となりました。

  • 同時リクエスト数10の場合⇒OK
  • 同時リクエスト数20の場合⇒OK
  • 同時リクエスト数30の場合⇒OK
  • 同時リクエスト数40の場合⇒OK
  • 同時リクエスト数50の場合⇒OK
  • 同時リクエスト数60の場合⇒OK
  • 同時リクエスト数70の場合⇒OK
  • 同時リクエスト数80の場合⇒OK
  • 同時リクエスト数90の場合⇒OK
  • 同時リクエスト数100の場合⇒OK
  • 同時リクエスト数110の場合⇒OK
  • 同時リクエスト数120の場合⇒OK
  • 同時リクエスト数130の場合⇒NG

130件目でエラーが発生しました。原因はApacheへのコネクション接続エラーでした。この時のサーバの状態としては以下の様になっていました。

  • CPU使用率・・・26%
  • メモリ使用率・・・100%

完全にメモリ不足がボトルネックとなっていました。

少しマニアックな内容となりますが、Apacheのマルチプロセッシングモジュール (MPM)の設定は以下となります。MPMとは簡単に説明するとどれだけApacheに並列処理させるかの設定です。

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

注目する設定は「MaxRequestWorkers」の「250」となります。こちらはApacheに最大何件同時処理させるかの設定となります。「250」なので250件は最大平行処理できそうですが、メモリ使用率を見ると1件あたり8MB程度メモリを使用していました。

メモリを960MB(8M×120件)使っている様で設定値は「250」ですが「120」以上プロセスを作成出来ないようでした。
※サーバのメモリは1Gのためほぼ上限まで達しています。

実際サーバを運用する際はPHPやJavaなども入れるとなると、100件くらいが限界で、余裕を持つと80件くらいなら同時平行処理できるのではないかと思います。

Apacheだけ入れて動かす場合はスペック「CPU:2コア、メモリ:1GB、SSD:50GB」だと同時アクセス数「120」が限界だと分かりました。

2-2. 考察

ここからは考察になりますが、メモリがボトルネックとなっているのでメモリを変更すれば同時並行処理できる処理数も増えるのではないかと思います。

【現在(メモリ1GB)】

  • メモリ:1GB
  • Apacheのスレッド数:120件
  • Apacheの1スレッドあたりのメモリ消費量:8MB
  • Apacheのメモリ消費量:960MB(120件×8MB)

【変更後(メモリ2GB)】

  • メモリ:2GB
  • Apacheのスレッド数:240件
  • Apacheの1スレッドあたりのメモリ消費量:8MB
  • Apacheのメモリ消費量:1920MB(240件×8MB)

メモリを2GBにすれば倍の240件くらいは同時並行処理できるのではないかと思います。メモリを3GBにすればさらに同時並行処理できそうですが、ApacheのMPMの「MaxRequestWorkers(最大何件同時処理させるか)」が「250」なので、さらにメモリをあげる場合はこちらのチューニングも必要になってきそうです。逆にメモリを半分にすると以下の様になるのではと思います。

【変更後(メモリ512GB)】

  • メモリ:512GB
  • Apacheのスレッド数:60件
  • Apacheの1スレッドあたりのメモリ消費量:8MB
  • Apacheのメモリ消費量:480MB(60件×8MB)

3. まとめ

WEBサーバ(Apache)が最大何件まで同時に処理できるのか測ってみた結果を記載させていただきました。意外とさくらのVPSの最低スペックのプラン(CPU:1コア、メモリ:512MB、SSD:25GB)でも60人程度の規模のシステムなら問題なく動作するので契約する際は参考にしてみてください。

あくまで今回の調査は限界性能で他のソフトウェアが動いていないといった前提のもと調査しています。限界値なので少し余裕を持ったスペックを選ぶことをおすすめします。

さくらVPSについてまとめた記事もありますので参考にしてください。

Java開発でさくらVPSがおすすめの理由

さくらVPSのリンクは以下となります。

さくらのVPSさくらのVPS

さくらのVPSさくらのVPS

最後までご覧いただきありがとうございました。



■INFORMATION

INFORMATIONのトップページはこちらよりお願いいたします。


■PROFILE

プロフィールはこちらよりお願いいたします。


■お問い合わせ先

記事に関するお問い合わせはこちらよりお願いいたします。