WordPressを2.5倍速くするPHPアクセラレータ「APC」:とにかく速いWordPress(2)(4/4 ページ)
企業のCMSサイトやオウンドメディアなどエンタープライズ用途での利用が増えている「WordPress」の高速化について解説する連載。第2回は、具体的なWordPressの高速化テクニックとして、ページのロード時間を2.5倍速くするPHPアクセラレータ「APC」を解説します。
PHPアクセラレータ「APC」を導入する
デフォルト環境でのパフォーマンス測定が終わりましたので、高速化のチューニングを進めていきましょう。最初にPHPアクセラレータである「APC」を導入します。
導入の前に、PHPの実行プロセスを簡単に説明しておきます。PHPの実行プロセスは2段階で行われます。第一ステップとして、最初に人間が記述したPHPのソースコードを構文解析して中間コード(バイトコード)に変換します。第二ステップとして、変換された中間コードをPHP仮想マシンである「Zend Engine」が実行します。
PHPアクセラレータは、この第一ステップで生成された中間コードをキャッシュして、二度目からキャッシュされた中間コードを再利用します。該当するPHPのソースコードに変更が加えられていなければ、第一ステップを省略することでPHPの実行速度を向上させるPHPのモジュールです。PHPのソースコードに変更が加えられていた場合はキャッシュされた中間コードは破棄されますので、PHPアクセラレータの有無によってPHPの出力結果が変わることはありません。
PHPアクセラレータには幾つかの種類がありますが、今回は、比較的簡単に導入でき、実績も豊富なAPCを導入することにします。
まず、APCのインストールに必要なモジュールをyumでインストールします。
[root@ip www]# yum install php-devel php-pear gcc -y
次に、peclコマンドでAPCをインストールします。ウィザード形式でのインストールになりますが、全てEnterで進めてください。
[root@ip-172-30-1-150 www]# pecl install apc
gccによるコンパイルが完了すると、「apc.so」ファイルが生成されます。これがAPCの本体になります。次の内容を/etc/php.d/apc.iniとして保存してください。
extension = apc.so apc.shm_size = 128M apc.enable_cli = 1 ;apc.filters = filename
「apc.shm_size」は共有メモリとして利用するメモリサイズ、「apc.enble_cli」はCLI(Command Line Interface)版のPHPでもAPCを有効にするか否かの設定です。「;」でコメントアウトしてある「apc.filters」はAPCによる中間コードのキャッシュを除外するファイル名です。もしキャッシュによって問題が起きる場合は、ここへ除外するファイル名の一部を記述します。通常は不要です。
保存が終わりましたら、Apacheを再起動して変更を反映させます。
[root@ip www]# systemctl restart httpd
ブラウザに戻り、トップページをリロードしてください。初回のみ少し時間がかかりますが、2度目以降のリロードではページのロード時間が速くなっていることが確認できます。筆者の環境では、およそ70ms前後になりました。前述したデフォルト環境では176msでした。
続いてabコマンドで先ほどと同様のベンチマークを取ってみます。
[root@ip www]# ab -n 100 -c 10 http://ec2-xxx.xxx.compute.amazonaws.com/
筆者の環境では、Requests per secondが29.20となりました。まとめると以下になります。
APC導入後のパフォーマンス比較 | ページのロード時間 | 1秒当たりの同時アクセス数 |
---|---|---|
デフォルト環境 | 176ms | 11.24 |
APC導入後 | 70ms(約251%) | 29.20 |
APCの導入で、約2.5倍のパフォーマンス向上を果たせました。
次回は、今回の続きとして、CentOS 7の標準のリポジトリを利用する範囲で可能なAPC以外の高速化テクニックを解説します。お楽しみに。
筆者紹介
中村けん牛
1971年栃木県生まれ。中学1年生で電波新聞社の『マイコンBASICマガジン』にプログラムを寄稿して以来、プログラミング歴30年。早稲田大学法学部を卒業後、野村證券に入社。公認会計士第二次試験合格。2002年にプライム・ストラテジー株式会社を設立、代表取締役に就任する。2005年にPT. Prime Strategy Indonesiaを設立して以来、アジアでのITビジネスに携わる。執筆監訳書籍に『WordPressの教科書』シリーズ(SBクリエイティブ)、『詳解 WordPress』『WordPressによるWebアプリケーション開発』(ともにオライリー・ジャパン)などがある。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 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を初期設定のまま使うと、いろいろ問題が起こる可能性があります。今回は、問題の発生を未然に防ぐ設定法をいくつか紹介します。(編集部)