1. HOME
  2. 開発・ブログ運営
  3. Docker
  4. WordPress が稼働する Apache2 コンテナと Nginx + PHP-FPM コンテナを Apache Bench で比較してみた
2016年07月22日
WordPress が稼働する Apache2 コンテナと N ...
2016年08月01日
Docker for Mac を使って WordPress の ...
2016年05月26日
エックスサーバーから さくらVPS + Docker に引っ越 ...
2016年07月08日
Docker 便利コマンドあれこれ
2016年07月06日
Jenkins コンテナの初期設定を自動化してみる
2016年07月29日
Docker for Mac/Windows で 「Canno ...

WordPress が稼働する Apache2 コンテナと Nginx + PHP-FPM コンテナを Apache Bench で比較してみた

WordPress の Docker 環境を整えるべく色々と試してます。今回は PHP が稼働する WEB サーバー 比較してみます。

このブログ(WordPress)は Apache 2 + モジュール版 PHP で動いていますが、Nginx + PHP-FPM で動いている WordPress が多いと思います。ってことで、Apache 2 から Nginx + PHP-FPM に変えたら、どのくらいパフォーマンスが変わるのか変わらないのか ab tool(Apache Bench)で比較してみました。


テスト環境とか

現在は、Docker コンテナ上で全てが動いているので、Nginx + PHP-FPM も全て Docker コンテナで試しています。

関連記事:エックスサーバーから さくらVPS + Docker に引っ越しました
関連記事:WordPress 稼働中の Docker コンテナの構成


使用したコンテナ

Apache 2 コンテナは Docker Hub にある WordPress 公式イメージ(wordpress:4.5.3-apache)を使用。

Nginx + PHP-FPM は、同じく Dockerhub にある Nginx 公式イメージ(nginx:1.11.1)と WordPress 公式イメージ(wordpress:4.5.3-fpm)を使用しました。

なお、データベースはどちらも Docker Hub にある MariaDB 公式イメージ(mariadb:10.1.16)を使って、docker-compose で起動しました。

すべてのコンテナ内の設定はほぼデフォルトのままです。

サーバースペック

さくら VPS 1G プラン(メモリ1GB、SSD、仮想 2 Core)です。また、Apache 2 コンテナ、Nginx + PHP-FPM コンテナの前段に、これまた Nginx 公式イメージで稼働する、プロキシキャッシュが動いてます。

関連記事:Nginx のプロキシキャッシュが効いているかどうか確認してみる

その他

ローカルの MacBook Pro から Apache Bench を実行しました。


Apache 2 コンテナの Apache Bench 結果

早速 Apache 2 コンテナで試します。同時接続数を 100(-c 100)、リクエスト総数を 1000(-n 1000)で。

結果は、失敗リクエスト(Failed requests)はなし。1秒あたりに処理りしたリクエスト数(Requests per second) は 61.21 となりました。また、1リクエストあたりの平均処理時間は 0.163 秒。

以下、Apache Bench の出力です。


Nginx + PHP-FPM の Apache Bench の結果

こちらも同時接続数を 100(-c 100)、リクエスト総数を 1000(-n 1000)で。

結果は、失敗リクエスト(Failed requests)はなし。1秒あたりに処理りしたリクエスト数(Requests per second) は 141.45 となりました。また、1リクエストあたりの平均処理時間は 0.153 秒。

以下、Apache Bench の出力です。


比較してみる

Apache 2 コンテナ Nginx + PHP-FPM コンテナ
失敗リクエスト数 なし なし
1秒あたりに処理りしたリクエスト数 61.21 リクエスト 141.45 リクエスト
1リクエストあたりの平均処理時間 0.163 秒 0.153 秒

どちらも失敗リクエストはなく、100 同時接続、総アクセス数 1,000 を無事に処理できているようです。また、1秒あたりの処理時間はほとんど同じですが、1秒あたりに処理したリクエスト数は、Nginx + PHP-FPM コンテナが Apache 2 コンテナの 2.3 倍のリクエストを処理できています。


それぞれのコンテナのメモリ消費量

一応メモリ消費量も docker status [コンテナ ID] で確認してみます。

関連記事:Docker 便利コマンドあれこれ

Apache コンテナ はおおよそ 70 MB 弱のメモリを消費していました。

Nginx + PHP-FPM 構成は、Nginx コンテナと PHP-FPM コンテナの 2つのコンテナとなり、コンテナ数が 1つ増えましたが、Nginx コンテナが 約 3.5 MB のメモリ消費、PHP-FPM コンテナが約 65 MB のメモリ消費なので、合わせて約 68.5 MB のメモリ消費となりました。

ということで Apache 2 コンテナも Nginx + PHP-FPM コンテナも違いはありませんでした。

ただ、アクセスが増加した場合に Apache と Nginx の処理方法の違いにより、Nginx + PHP-FPM の方がメモリ消費量が大幅に削減される。。と思われます。


まとめ

Nginx + PHP-FPM コンテナの方が Apache 2 コンテナよりも良い結果となりましたが Apache 2 コンテナは PHP-FPM(Fast CGI)ではなく、いわゆるモジュール版の PHP のため、WEB サーバーとしての Apache 2 と Nginx 性能比較はできません。(Apache 2 が Nginx に劣っているわけではない)

なので、Apache 2 + PHP-FPM の環境でもテストしてみたいところですが面倒臭い。

また、サーバー環境に合わせたチューニングも行っていないので、それぞれにさらなる性能向上を見込めます。

ということで、このブログもすでに Nginx + PHP-FPM コンテナに置き換えてしまいました。Docker で稼働しているのでコンテナを入れ替えるだけで簡単に Nginx + PHP-FPM に移行できました。

若干のトラブル(?)がありましたが、そのあたりは別のエントリで。

でわでわ。








この記事にコメントする





Copyright © 2012 - 2014 MacBook Air とWordPressでこうなった All rights reserved
Powered by WordPress.