WordPressサーバーの高速化(効果大)OPcacheとAPCuでWordPressの速度を5倍以上に向上させる。

2018/07/05 Apache, CentOS, Linux, サーバー構築

opcache-apcu-inst-top
今回は、前回の記事
>「WordPressの高速化に。ApacheのeventMPMとphp-fpmを利用してウェブサイトの速度を向上する。」
で作成したphp-fpmが動作する環境を利用して、更にWordPressを高速化するためのphp用パッケージであるOPcacheとAPCuを導入します。OPcacheとapcuはPHPアクセラレータと呼ばれるphpを高速化させるためのソフトウェアです。OPcacheはコンパイルしたphpのコードをメモリに保存しておく仕組みで、アクセス毎のスクリプト読み込みを回避します。APCuも同じくキャッシュを行うソフトウェアになり、こちらはコードではなくデータをキャッシュ(共有メモリにデータを保存する)します。

スポンサーリンク

纏めると

  • OPcache … コンパイルしたコードをキャッシュ
  • APCu … データのキャッシュ

という機能を提供します。
前回の記事「WordPressの高速化に。ApacheのeventMPMとphp-fpmを利用してウェブサイトの速度を向上する。」では、多少ですがパフォーマンスが向上しましたが、大きくは変わっていません。今回はキャッシュ用のソフトウェアになることから大幅なパフォーマンス向上が期待できます。WordPressやPHPを利用しているサイトの高速化に、是非、試して頂きたい方法です。

1.OPcacheとapcuを導入する環境

opcacheとapcuをインストールする環境はphp-fpmの導入手順を紹介した記事「WordPressの高速化に。ApacheのeventMPMとphp-fpmを利用してウェブサイトの速度を向上する。」で紹介していますが、確認の意味で再度纏めておきます。基本的な環境は以下の通りです。

  • OSのバージョンはCentOSで最新(2018年5月現在)のバージョン7.5を利用しています。
  • ウェブサーバーとしてApache2.4.6がインストールされています。
  • Apacheは基本的な設定が完了して、テストページが表示されています。
  • ApacheはHTTPS通信に対応した設定が完了しています。
  • ApacheはMPMとしてeventMPMが設定されています。
  • PHP 7.2系をインストールしており、テストページまで表示されています。
  • php-fpm7.2系をインストールしており、fastCGI版のphpが動作しています。
  • MariaDBは10系(10.2)をインストールしており、最低限の設定を行っています。
  • WordPressがインストールされています。
  • サーバーはインターネットへ接続されており、グローバルIPアドレスが一つ、割り当てられています。
  • ファイアウォールとしてfirewalldを設定しています。

この環境を前提にOPcacheとAPCuのインストールを進めていきます。インストールするOPcacheとAPCuは以前の記事と同様に7.2系を利用します。(2018年6月時点では7.2.6)

2.OPcacheインストール前のphp情報を確認

現状のphpについて情報を確認します。OPcacheをインストールすると、”php -v”実行結果の”Zend Engine”の部分が変更されます。先ずはインストールを行う前に出力内容を確認しておきます。

上記のようにバージョンが表示されれば、phpの情報確認は完了です。この時点ではOPcacheに関する情報は表示されていないことを覚えておきます。

3.OPcacheとAPCuパッケージのインストール

インストールするパッケージの情報が確認できましたので、ここからは実際にOPcacheとAPCuの導入について説明を行います。

3-1.OPcacheとAPCuパッケージ情報の確認

OPcacheとAPCuパッケージのインストール前に、パッケージの情報を確認しておきます。php7.2系のOPcacheとAPCuはremiレポジトリに含まれるため、確認コマンドの実行時にremiレポジトリを参照するように指定します。パッケージ名は

  • OPcache … php-opcache
  • APCu … php-pecl-apcu

になります。以下のようにyumを実行します。

実行結果は以下の通りです。各パッケージの役割などを確認しておくと、インストールするパッケージの意味合いをイメージしやすいと思います。

上記のように7.2系のOPcacheとAPCuが表示されることが確認できました。この2パッケージをインストールしていきます。

3-2.OPcacheとAPCuパッケージのインストール

パッケージはyumコマンドにinstallオプションを付けることでインストールすることができます。項目3-1.で必要なパッケージの情報が確認できましたので、以下のコマンドでインストールします。

上記ではyumコマンドに”-y”オプションを付けることでインストール時の確認応答を省いています。コマンドを実行すると、以下のようにインストールが開始されます。

エラーがなく、”完了しました!”と表示されればOPcacheとAPCuパッケージのインストールは完了です。

3-3.インストールしたパッケージの確認

OPcacheがインストールされたことを確認します。インストールされているパッケージはyumコマンドで確認できます。以下のようにyumを実行することで、OPcacheパッケージがインストールされていることを確認します。

出力結果として、以下のOPcacheパッケージが表示されることを確認します。

次にAPCuパッケージがインストールされたことを確認します。同じくyumで確認を行います。

出力結果として、以下のAPCuパッケージが表示されることを確認します。

これでインストールしたパッケージの確認は完了です。

スポンサーリンク

4.phpコマンドによるOPcacheとAPCuの確認

パッケージのインストールと確認まで完了しましたので、ここからはphpコマンド利用して、OPCacheとAPCuが有効になっていることを確認します。

4-1.OPcacheの確認

OPcacheが動作しているかの確認はphpコマンドに-vを付けて実行します。以下のような結果になります。

項目2.では Zend Engineと表示されていた部分が”Zend OPcache”に変更されていることが確認できます。

4-2.APCuとOPcacheの設定確認

続いて、APCuとOPcacheの設定を確認します。phpコマンドに”-i”を付与して実行します。-iを付与することでphpの情報を出力することができます。ここでは設定確認として、出力された情報に含まれる文字列”apc”と”opcache”のみを抽出します。以下のように実行します。

出力結果は以下のようになります。

上記からphpにOPcacheとAPCuが組み込まれていることが確認できました。本パラメータは運用環境に合わせて変更することで、よりパフォーマンスを引き出すことが出来ますが、デフォルトでも十分にパフォーマンスは向上しますので、変更は行わない前提です。これでphpコマンドによるOPcacheとAPCuの確認は完了です。

5.OPcacheとAPCuの有効化

項目4.まででOPcacheとAPCuの導入が完了しましたので、機能を有効化する手順を説明します。

5-1.php-fpmの再起動

OPcacheとAPCuのキャッシュ機能を有効にするためにphp-fpmを再起動します。systemctlコマンドを以下のように実行します。

再起動後にphp-fpmのステータスを確認します。

php-fpmが正常に再起動していることが上記から確認できます。

5-2.Apache(httpd)の再起動

php-fpmと合わせて、念のためにApacheも再起動を行います。

エラーが出力なければ、Apacheは正常に再起動しています。ステータスを確認します。

上記の結果からApacheは正常に再起動していることが確認できました。これでOPcacheとAPCuの有効化は完了です。

6.パフォーマンスの比較

ここまででOPcacheとAPCuの導入と機能の有効化が完了しました。実際のどの程度、パフォーマンスが向上したかをApacheに付属しているApache Benchコマンド、”ab”で測定してみます。abはApacheを導入すると同時にインストールされます。ここでは環境として、別のサーバーから、OPcacheとAPCu(+ php-fpm)を導入したサーバーを測定するようにしています。

6-1.初回のabテスト

先ずはキャッシュがない状態でのテストを行います。abコマンドにはオプションとして”-n”と”-c”を指定します。-nはリクエスト総数を指定します。-cは同時接続数になります。本記事では100リクエストを同時接続10ユーザーを前提としてテストを実行しました。(記事「WordPressの高速化に。ApacheのeventMPMとphp-fpmを利用してウェブサイトの速度を向上する。」と比較を行うため、同条件でテストを行っています。)
結果は以下のようになりました。
abテスト初回(キャッシュなし)

本テストでは以下の項目に注目しました。

  • Time taken for tests: 10.523 seconds
  • Requests per second: 9.50 [#/sec] (mean)

”Time taken~”はテストの所要時間、”Requests per~”は秒間でどれだけのリクエストを処理できたかを示す項目になります。上記から従来の構成では、テストの所要時間は約10.5秒で、1秒間に処理できたリクエストは約9.5になります。
php-fpmのみの構成の場合、以下の数値でした。(記事「WordPressの高速化に。ApacheのeventMPMとphp-fpmを利用してウェブサイトの速度を向上する。」項目8-2.を参照)

  • Time taken for tests: 13.655 seconds
  • Requests per second: 7.32 [#/sec] (mean)

この数値と比較すると、やや早くなっているというレベルでそれ程、大きくは変わっていません。

6-2.二回目のabテスト

続いて同じ条件で二回目のテストを行います。二回目にはキャッシュが利用されますので、初回よりパフォーマンスが出ることが期待できます。結果は以下のようになりました。
abテスト二回目(キャッシュあり)

本テストでは以下の項目に注目しました。

  • Time taken for tests: 2.898 seconds
  • Requests per second: 34.50 [#/sec] (mean)

”Time taken~”はテストの所要時間、”Requests per~”は秒間でどれだけのリクエストを処理できたかを示す項目になります。上記から従来の構成では、テストの所要時間は約2.8秒で、1秒間に処理できたリクエストは約34.5になります。
二回目にはキャッシュが有効になっているため、php-fpmのみの場合と比較して、所要時間で約6倍、リクエスト数は約5倍と大きなパフォーマンス向上が確認できました。
このことからOPcacheとAPCuについては、WordPressの速度向上に大きな効果があると思われます。

7.まとめ

WordPressのパフォーマンスを向上するために、最近の記事で二つの方法を紹介してきました。

  • eventMPMを利用して、php-fpmと組み合わせる方法
  • PHPアクセラレータと呼ばれるキャッシュ用機能を利用する方法

どちらの方法もパフォーマンスを向上するために有効であることが確認できました。特にPHPアクセラレータについては効果が大きい為、自社サーバーやVPSで運用している場合は、かなりの効果が期待できます。
WordPress側でもキャッシュを行うプラグインがリリースされていますが、こちらは不具合も多いので、是非、OPcacheやAPCuを利用してWordPressの高速化を体験してみて下さい。デフォルトでの運用と比較して体感でわかる程に速度が向上します。

関連する記事


システムでお困りのお客様

もし、貴社で、

  • サポート切れのサーバやネットワーク機器の入れ替えをしたいが、どうしたらよいかわからない
  • サーバやネットワークの管理を行う社員がいないため困っている
  • 業務に利用している機器のセキュリティが大丈夫か心配
  • 機器の障害で、業務への影響が発生している
  • 社内の要望に対して、どのようなシステムを導入したらよいか解らない

など、サーバーやネットワーク、セキュリティでお悩みの方、新規のシステム導入を検討中の方。
多くのシステム構築を行い、成功させてきた実績をもつ弊社が、その問題を解決します。
お気軽にお問い合わせ頂き、貴社の問題解決にお役立てください。

お問い合わせ・ご相談はこちらから

Facebookでのご購読が便利です。

Twitter・Feedlyでもご購読できます。

Twitterでフォローする Feedlyでフォローする

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • スポンサーリンク