CentOS 7の標準環境だけですぐできる、WordPress「5.4倍高速化」テクニック 前編:とにかく速いWordPress(3)(1/3 ページ)
企業の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の標準リポジトリのみを使って、
- PHPの実行時間
- MySQLの実行時間
- 翻訳処理の実行時間
- HTTPレスポンスの通信時間
を最適化するテクニックにより、WordPressをもっと高速化していきます。
さらに、Apacheの構成とOSのパラメータについての最適化も導入して、CentOS 7の外部リポジトリとページキャッシュを用いない範囲でどこまでWordPressを高速化できるかも追求しましょう。ベンチマークを取りながら、最終的に「5.4倍」のパフォーマンス向上を目指します。
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”」をご覧いただいてから導入するようにしてください。
(参考記事)連載:とにかく速いWordPress
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
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.
関連記事
- さっくり理解するPHP 5.5の言語仕様と「いい感じ」の使い方
PHP 5.5.0が公開されました。オペコードキャッシュやジェネレータなど、言語仕様としても実行エンジンとしても挑戦的な内容が含まれています。 - WordPress自体のチューニングが必要な理由と高速化の基本的な考え方
企業のCMSサイトやオウンドメディアなどエンタープライズ用途での利用が増加しているWordPressの高速化について解説する連載。初回は、WordPressの高速化が求められる背景や、WordPress高速化の基本的な考え方であるページのロード時間とその構成要素、1秒当たりの同時アクセス数について解説します。 - ここが変わったCentOS 7──「新機能の概要とインストール」編
「CentOS 7」を皆さんどれだけ理解していますでしょうか。CentOS 7は、以前のバージョンから使い勝手がかなり変わりました。本連載では、今さら聞けない/おさらいしたいというインフラエンジニアに向け、CentOS 7の概要と基礎から活用Tipsまでを紹介していきます。 - 安いホスティングに引っ越しって簡単にいうけど 〜リモートアクセスにはSSHを使いましょう〜
安いホスティング先に、メールサーバと社外向けWebサーバが引っ越した。Web画面のリモート設定でいらいらする律子さん。使い慣れたtelnetではアクセスできず…… - Webのバグを燃やしまくるFirebugと、そのアドオン7選
- httpd.confによるWebサーバの最適化
Webサーバのチューニングには、いくつかの段階がある。今回は、httpd.confの修正によるApacheの最適化について説明する。(編集部) - Apacheパフォーマンス・チューニングのポイント
Apacheをチューニングすることにより、Webサイトのパフォーマンスをより向上させることができる。しかし、その前に何をチューニングすべきなのかを見極める必要がある。 - Apacheパフォーマンス・チューニングの実践
前回、ボトルネックになり得るポイントの検討やベンチマークツール「ab」によるパフォーマンス・チェック方法を紹介した。今回はそれらを基に、Apacheのチューニングを行っていく。 - MySQLの高度な管理とチューニングテクニック
本連載もついに最終回。今回はMySQLサーバの運用・管理に必要な状態監視、チューニング、バックアップ、セキュリティについて解説する。以下のテクニックを駆使すれば、MySQLをさらに安定稼働させられるだろう。 - 安全を考えてPHPの実行時設定を調整する
PHPを初期設定のまま使うと、いろいろ問題が起こる可能性があります。今回は、問題の発生を未然に防ぐ設定法をいくつか紹介します。(編集部)