企業のCMSサイトやオウンドメディアなどエンタープライズ用途での利用が増えている「WordPress」の高速化について解説する連載。今回は、CentOS 7の標準環境でWordPressを「5.4倍まで高速化」するテクニックを解説します。
前回は、Amazon Web Services(以下、AWS)の仮想クラウドサーバ「Amazon Elastic Compute Cloud(Amazon EC2)」上のCentOS 7にインストールしたWordPressを題材に、PHPアクセラレータである「APC(Alternative PHP Cache)」を導入し、「2.5倍高速化」するテクニックを紹介しました。
今回はその続きとして、CentOS 7の標準リポジトリのみを使って、
を最適化するテクニックにより、WordPressをもっと高速化していきます。
さらに、Apacheの構成とOSのパラメータについての最適化も導入して、CentOS 7の外部リポジトリとページキャッシュを用いない範囲でどこまでWordPressを高速化できるかも追求しましょう。ベンチマークを取りながら、最終的に「5.4倍」のパフォーマンス向上を目指します。
前回紹介したPHPアクセラレータである「APC」は、PHPの中間コードをキャッシュする「コードキャッシュ機能」と、ユーザーデータをメモリ内にKVS(Key Value Store)形式でキャッシュする「データキャッシュ機能」、大別して2つの機能を持っています。前回は、中間コードをキャッシュするコードキャッシュ機能を利用してPHPの実行時間を短縮させました。今回は、別のPHPアクセラレータである「OPCache」を導入することで、さらにPHPの実行時間を短縮させます。
OPCacheは、PHP 5.5以降で標準となった高性能なPHPアクセラレータです。PHP 5.4にも導入可能です。しかしOPCacheは、APCに備わるユーザーキャッシュ機能を持っていないため、APCと同等のユーザーキャッシュ機能を持つKVSである「APCu」を併せて導入します。APCuのユーザーキャッシュ機能は、後述する翻訳処理の最適化処理で利用します。
ちなみに、APCはPHP 5.5以降では利用できません。APCを用いた環境をPHP 5.5以降にアップデートする場合には、今回紹介するOPcacheとAPCu、二つのエクステンションを導入する必要があります。
それでは、実践していきましょう。前回紹介した「CentOS 7上でAPC導入済みのWordPress環境」が既にあることを前提に解説しますので、この記事から読み始めた方は、連載バックナンバーの第1回目から、ないし第2回目「WordPressを2.5倍速くするPHPアクセラレータ“APC”」をご覧いただいてから導入するようにしてください。
(参考記事)連載:とにかく速いWordPress
仮想マシンにSSHでログインして、管理者ユーザーに変更します。
[centos@ip ~]$ sudo su -
次に、peclコマンドで「OPcache」と「APCu」をインストールします。APCuはウィザード形式でインストールが進むので、全てEnterで進めて大丈夫です。
# pecl install zendopcache-7.0.5 # pecl install apcu-4.0.10
なお、peclコマンドでのエクステンションの導入は、バージョンの指定が可能です。上記のコマンド例では、OPcacheは執筆時点での最新バージョンである「7.0.5」を、APCuはPHP 5系に対応している最新バージョンである「4.0.10」を指定してインストールしています。各エクステンションの最新バージョンおよびPHPの対応バージョンについては、以下のサイトより確認してください。
次に、設定ファイル「apc.ini」を記述します。次の内容を/etc/php.d/apc.iniとして保存してください。
[opcache] zend_extension = /usr/lib64/php/modules/opcache.so opcache.enable = 1 opcache.enable_cli = 1 opcache.memory_consumption = 128 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 4000 opcache.blacklist_filename = /etc/php.d/opcache*.blacklist [apcu] extension = apcu.so apc.enabled = 1 apc.enable_cli = 1 apc.shm_size = 64M apc.mmap_file_mask = /tmp/apc.XXXXXX
Apacheを再起動して、変更を反映させます。
[root@ip ~]# systemctl restart httpd
Webブラウザで、トップページにアクセスしてください。初回は少し時間がかかりますが、二度目以降のリロードではページのロード時間が速くなっていることが確認できます。筆者の環境では、およそ66ms前後になりました(画面1)。
続いてabコマンドでベンチマークを取ってみます。
[root@ip ~]# ab -n 100 -c 10 http://ec2-xxx.xxx.compute.amazonaws.com/
筆者の環境では、Requests per secondが30.51となりました。前回のベンチマークも併せてまとめると以下になります。
パフォーマンス比較 | ページのロード時間 (デフォルト環境比) |
1秒当たりの同時アクセス数 (Requests per second) |
---|---|---|
デフォルト環境 | 176ms | 11.24 |
APC導入後(前回) | 70ms(約251%) | 29.20 |
OPcache+APCu導入後(今回) | 66ms(約266%) | 30.51 |
OPcache+APCuの導入により、デフォルト環境と比べて約2.6倍に、APC導入時と比べても6%ほどパフォーマンスが向上しました。
Copyright © ITmedia, Inc. All Rights Reserved.