連載
» 2016年02月25日 05時00分 UPDATE

とにかく速いWordPress(3):CentOS 7の標準環境だけですぐできる、WordPress「5.4倍高速化」テクニック 前編 (1/3)

企業のCMSサイトやオウンドメディアなどエンタープライズ用途での利用が増えている「WordPress」の高速化について解説する連載。今回は、CentOS 7の標準環境でWordPressを「5.4倍まで高速化」するテクニックを解説します。

[中村けん牛,プライム・ストラテジー]
backn2.gif

連載バックナンバー

 前回は、Amazon Web Services(以下、AWS)の仮想クラウドサーバ「Amazon Elastic Compute Cloud(Amazon EC2)」上のCentOS 7にインストールしたWordPressを題材に、PHPアクセラレータである「APC(Alternative PHP Cache)」を導入し、「2.5倍高速化」するテクニックを紹介しました。

 今回はその続きとして、CentOS 7の標準リポジトリのみを使って、

  1. PHPの実行時間
  2. MySQLの実行時間
  3. 翻訳処理の実行時間
  4. HTTPレスポンスの通信時間

 を最適化するテクニックにより、WordPressをもっと高速化していきます。

 さらに、Apacheの構成とOSのパラメータについての最適化も導入して、CentOS 7の外部リポジトリとページキャッシュを用いない範囲でどこまでWordPressを高速化できるかも追求しましょう。ベンチマークを取りながら、最終的に「5.4倍」のパフォーマンス向上を目指します。

photo WordPressの日本語ローカルサイト

PHPアクセラレータ「OPCache」と「APC」の違い

 前回紹介した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”」をご覧いただいてから導入するようにしてください。

PHPアクセラレータ「OPcache」、KVSの「APCu」を導入する

 仮想マシンに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の対応バージョンについては、以下のサイトより確認してください。

各エクステンションの最新バージョンおよび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
リスト1:/etc/php.d/apc.ini

 Apacheを再起動して、変更を反映させます。

[root@ip ~]# systemctl restart httpd

 Webブラウザで、トップページにアクセスしてください。初回は少し時間がかかりますが、二度目以降のリロードではページのロード時間が速くなっていることが確認できます。筆者の環境では、およそ66ms前後になりました(画面1)。

photo 画面1 WordPressのトップページのロード時間をFirebugで確認したところ


 続いてabコマンドでベンチマークを取ってみます。

[root@ip ~]# ab -n 100 -c 10 http://ec2-xxx.xxx.compute.amazonaws.com/
(“xxx”はユーザー固有の文字列、以下同)

 筆者の環境では、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%ほどパフォーマンスが向上しました。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。