「WordPress“1000倍”高速化」チューニング 第一弾──「PHP 5.6」「OPCache」「APCu」を導入する:とにかく速いWordPress(5)(1/2 ページ)
エンタープライズ用途での利用が増えている「WordPress」の高速化チューニングテクニックを解説する本連載。今回から数回にわたって、前回の5.4倍を大きく上回る「1000倍高速化」までチューニングするテクニックをお届けします。
前回は、Amazon Web Services(以下、AWS)の仮想クラウドサーバ「Amazon Elastic Compute Cloud(Amazon EC2)」上のCentOS 7にインストールしたWordPressを題材に、「5.4倍速くする」テクニックを解説しました。具体的には、CentOS 7の標準のリポジトリのみを用いて、gzip圧縮、Tuned、Apacheのevent MPM+php-fpm構成の導入などを行いました。
今回は、そのWordPressをさらに「高速化」していきます。CentOS 7の標準リポジトリ以外のリポジトリも利用して、「PHP 5.6」「PHP 7」「HHVM(HipHop Virtual Machine)」「Nginx」などを導入し、さらなるチューニングを施していきます。最終的には、1秒当たりの同時アクセス数パフォーマンスにおいて、ページキャッシュを利用しないNginx+HHVM構成で「約18倍」、この構成にページキャッシュであるNginxのFastCGIキャッシュを追加して「約1000倍」のパフォーマンス向上を目指します。
なお今回より、パフォーマンスの測定に当たっては、「1秒当たりの同時アクセス数」を基準にチューニングをしていきます。チューニングを進めるほどに、ページのロード時間に含まれるインターネット上の通信時間(レイテンシ)が無視できないほどの割合になり、測定がうまくできなくなることが理由です(ページのロード時間も参考として示します)。
では早速実施していきましょう。これまで解説してきたチューニングの続きですので、この記事からご覧の方は、連載バックナンバーから、まず「5.4倍高速化」までチューニングを済ませておいてください。
チューニング内容 | ページのロード時間 (デフォルト環境比) |
1秒当たりの同時アクセス数 (Requests per second) |
---|---|---|
デフォルト環境 | 176ms | 11.24 |
APCの導入 →チューニング方法をおさらい |
70ms(約251%) | 29.20 |
OPcache+APCuを導入 →チューニング方法をおさらい |
66ms(約266%) | 30.51 |
MariaDBの設定を調整 →チューニング方法をおさらい |
64ms(約275%) | 31.82 |
翻訳アクセラレータを導入(キャッシュ) →チューニング方法をおさらい |
53ms(約332%) | 39.29 |
翻訳アクセラレータを導入(翻訳を停止) →チューニング方法をおさらい |
36ms(約488%) | 56.78 |
gzip圧縮を用いる →チューニング方法をおさらい |
35ms(約502%) | ─ |
Tunedの調整 →チューニング方法をおさらい |
34ms(約517%) | 58.47 |
event MPM+php-fpm構成に変更 →チューニング方法をおさらい |
33ms(約537%) | 60.79 |
AWSユーザーならば場合によって…… →チューニング方法をおさらい |
31ms(約567%) | 71.76 |
PHP 5.6+OPCache+APCuを導入する
前回紹介したPHPの実行環境は、CentOS 7標準のPHP 5.4です。今回は外部リポジトリのEPELリポジトリとRemiリポジトリを導入して、「PHP 5.6」環境を構築します。
まず、仮想マシンにSSHでログインして、管理者ユーザーに変更します。
[centos@ip ~]$ sudo su -
既存のPHP 5.4と関連パッケージを取り除きます。
[root@ip ~]# yum remove php* -y
EPELリポジトリとRemiリポジトリを追加し、PHP 5.6、OPCache、APCuなどの関連パッケージを導入します。
[root@ip ~]# yum install epel-release -y [root@ip ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm [root@ip ~]# yum --enablerepo=remi,remi-php56 install php php-mysqlnd php-gd php-xml php-xmlrpc php-mbstring php-mcrypt php-fpm php-opcache php-apcu -y
PHP 5.4環境で作成した「apc.ini」が残っていますので、こちらが読み込まれないようにバックアップファイルにしておきます。
なお、上記の処理でPHP本体の設定ファイルは「/etc/php.ini」、OPCacheの設定ファイルは「/etc/php.d/10-opcache.ini」、APCuの設定ファイルは「/etc/php.d/40-apcu.ini」として既にインストールされています。
[root@ip ~]# mv /etc/php.d/apc.ini /etc/php.d/apc.ini.bak
PHPのタイムゾーンを設定します。/etc/php.iniの889行目付近の該当する行を次のように変更してください。
(略) [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = UTC (略)
これで、PHP 5.6環境のインストールは完了です。正しくインストールされたか、php -vコマンドでステータスを確認します。
[root@ip ~]# php -v PHP 5.6.20 (cli) (built: Mar 31 2016 07:17:10) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
[root@ip ~]# php -i | egrep 'apc|opcache' Additional .ini files parsed => /etc/php.d/10-opcache.ini, /etc/php.d/40-apcu.ini, apc apcu MMAP File Mask => /tmp/apc.XXXXXX apc.coredump_unmap => Off => Off apc.enable_cli => Off => Off apc.enabled => On => On (略) opcache.blacklist_filename => /etc/php.d/opcache*.blacklist => /etc/php.d/opcache*.blacklist opcache.consistency_checks => 0 => 0 opcache.dups_fix => Off => Off opcache.enable => On => On opcache.enable_cli => Off => Off (略)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- WordPress自体のチューニングが必要な理由と高速化の基本的な考え方
企業のCMSサイトやオウンドメディアなどエンタープライズ用途での利用が増加しているWordPressの高速化について解説する連載。初回は、WordPressの高速化が求められる背景や、WordPress高速化の基本的な考え方であるページのロード時間とその構成要素、1秒当たりの同時アクセス数について解説します。 - Dreamweaverで始めるWordPressサイト構築の基礎知識
Dreamweaverの概要と新機能、WordPressの概要、環境構築を行う際に必要な初期設定などを紹介する。 - 障害時にサブサーバへ自動で切り替える「高可用性WordPressシステム」の作り方 前編
サービスを止めてはならない環境で活躍する冗長化支援ツール「DRBD」。今回は、CMSツールとして多くのWebサイトで利用されている「WordPressサーバ」の高可用性をDRBDで確保する方法を解説します。前編は、必要なソフトウェアのインストールと初期設定までを説明します。