PHP 7をOPcacheとAPCuで高速化する(PHPアクセラレータ)

サーバー

PHP7が更に爆速になると噂のOPcacheとAPCuをインストールしてテストする。

WordPressを利用しているサイトでは効果絶大との情報だが、はたしてどれだけの速度増加が認められるだろうか?

前回のサイトの表示速度測定がこちら↓

Nginxのブラウザキャッシュを有効化してサイト表示を高速化
WEBサイトの表示速度を計測してくれるサービスでブラウザキャッシュに関して指摘されたので、Nginxのブラウザキャッシュ(Expires)を設定して高速化します。 ちなみに以下が前回の高速化カスタマイズと計測結果です。 ...

早速試してみる。

※動作確認環境
CentOS 7.6
PHP 7.2.13
Nginx 1.14.2

スポンサーリンク

PHPアクセラレータとは

PHPアクセラレータとはPHPを高速化するための拡張機能です。「OPcache」や「APCu」などがそれにあたります。

機能としては、アクセスされたPHPスクリプトのソースコードがコンパイルされた段階で中間キャッシュとしてメモリに保存し、以降同じPHPスクリプトが実行された場合はメモリに保存された中間キャッシュを再利用することが出来るようになります。

ちなみにPHPスクリプトの実行時は以下の順番で実行されます。

  1. PHPスクリプトにアクセス
  2. コンパイル
  3. 中間コード生成
  4. 実行

上記の「コンパイル」の部分がキャッシュ利用により省略されることで単純に高速化する仕組みで、「OPcache」はソースコード全般を担当し、「APCu」はオブジェクトや変数を担当します。

では早速インストールしていきます。

スポンサーリンク

「OPcache」「APCu」のインストール

現在のPHPのバージョン調査

まず、現在のPHPのバージョンを調べます

インストール

PHP 7.2用の「remi-php72」を利用してphp-opcacheとphp-pecl-apcuをインストールします。
※PHPのバージョンに合ったremi-phpを利用してインストールしてください。(PHP 7.2は「remi-php72」、PHP 7.1は「remi-php71」、PHP 7.0は「remi-php70」等)

インストール後の確認

ちゃんとインストールできたか調べます。

OKですね。「with Zend OPcache v7.2.13」を確認しました。

設定ファイルの調査

設定ファイルを調べます。

設定ファイルは「/etc/php.d/10-opcache.ini」ですね。

設定ファイルをカスタマイズ(任意)

設定をカスタマイズしたい場合は、PHPの公式マニュアルを参照してカスタマイズしてください。

■HPの公式マニュアル(opcache.configuration)
URL: http://php.net/manual/ja/opcache.configuration.php

opcache.enable boolean
オペコード・キャッシュを有効にします。 無効にした場合、コードは最適化もキャッシュもされません。 opcache.enable の設定を、実行時に ini_set() で有効化することはできません。 実行時にできるのは、無効化だけです。スクリプト内で有効化しようとすると、警告が発生します。

opcache.enable_cli boolean
PHP の CLI 版に対してオペコード・キャッシュを有効にします。

opcache.memory_consumption integer
OPcache によって使用される共有メモリ・ストレージのサイズ。( MB 単位)

opcache.interned_strings_buffer integer
インターン (intern) された文字列を格納するために使用されるメモリ量。( MB 単位) この設定ディレクティブの値は、PHP 5.3.0 未満では無視されます。

opcache.max_accelerated_files integer
OPcache ハッシュテーブルのキー(すなわちスクリプト)の最大数。 使用される現時点の値は、 素数の集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } のうち、 設定値以上の最初の数値です。 最小値は 200 です。最大値は、PHP 5.5.6 より前のバージョンでは 100000、PHP 5.5.6 以降では 1000000 となります。

引用:http://php.net/manual/ja/opcache.configuration.php

↑このあたりでOPcacheの基本的なカスタマイズができます。
※当方はデフォルト設定のままにしました。

WEBサーバー再起動

※Apacheの場合

※Nginxの場合

以上でインストール作業は完了です。

スポンサーリンク

速度比較テスト

まずキャッシュを貯めるためにブラウザで何度かサイトにアクセスしてから再度測定を行います。

Apache Benchによるテスト

■インストール前

■インストール後

【結果】
Requests per second: 3.40 → 6.80 ※3.40[#/sec]アップ!
Time per request: 2944.360 → 1471.260 ※1473.1[ms]減少!
Time per request: 294.436 → 147.126 ※147.31[ms]減少!
Transfer rate: 1324.69 → 2656.88 ※1332.19[Kbytes/sec]アップ!
※全てにおいて約2倍のパフォーマンスとなっています。

PageSpeed Insights

URL: https://developers.google.com/speed/pagespeed/insights/

■インストール前

PageSpeed InsightsでのOPcacheとAPCuインストール前テスト

■インストール後

PageSpeed InsightsでのOPcacheとAPCuインストール後テスト

【結果】
スマホ:スコア73 → スコア73 ※変化なし
PC:スコア98 → スコア99 ※1ポイントアップ!

Test My Site(テストマイサイト)

URL: https://testmysite.withgoogle.com/intl/ja-jp

■インストール前

Test My SiteでのOPcacheとAPCuインストール前テスト

■インストール後

Test My SiteでのOPcacheとAPCuインストール後テスト

【結果】
3Gでの読み込み時間:4秒(良好)→ 3秒(特に良好)※1秒アップ!
訪問者の推定離脱率:10% → 低 ※改善!

Pingdom Website Speed Test

URL: https://tools.pingdom.com/

■インストール前

Pingdom Website Speed TestでのOPcacheとAPCuインストール前テスト

■インストール後

Pingdom Website Speed TestでのOPcacheとAPCuインストール後テスト

【結果】
Performance grade:82 → 82 ※変化なし
Load time:2.29秒 → 1.76秒 ※0.32秒短縮!
※PHPの実行速度に関係のあるものだけ抜粋

GTmetrix

URL: https://gtmetrix.com/

■インストール前

GTmetrixでのOPcacheとAPCuインストール前テスト

■インストール後

GTmetrixでのOPcacheとAPCuインストール後テスト

【結果】
PageSpeed Score:A(91%)→ A(91%)※変化なし
YSlow Score:C(79%)→ C(79%)※変化なし
Fully Loaded Time:3.3秒 → 3.0秒 ※0.3秒減少!
※PHPの実行速度に関係のあるものだけ抜粋

スポンサーリンク

総評

インストール作業はとても簡単です。

今回に実際にやったことは、ある意味以下の一行をSSHで実行してWEBサーバーを再起動しただけ。(※remi-php72はPHPのバージョンにより変えてください。)

簡単な手順でPHP自体の速度アップが可能なので、これは必ずインストールしておくべきですね。

 

更に今後も高速化のチャレンジを続けていきます。