PHP のパフォーマンスチューニング

LAMP環境(Linux-Apache httpd-MySQL-PHP)におけるWebアプリケーションのパフォーマンスチューニングにおいて、ここではPHPに関するポイントを整理しておきたいと思います。 なお、記事投稿時点でのPHPは、バージョン5.3.9です。

1.実行コードキャッシュ

コンパイル言語ではなくインタープリター言語であるPHPでは、同じコードの構文解析・コンパイルを繰り返さないことがパフォーマンス上の重要なポイントです。

そこで、構文解析・コンパイル後のコード(実行コード)をキャッシュすることで、同じコードを使用する二度目以降のリクエストについては、キャッシュされた実行コードを使用することができるようになります。

そのような実行コードのキャッシュ機能は、

eAccelerator APC(Alternative PHP Cache)

を利用することで実現できます。

eAcceleratorについては『PHP~パフォーマンス向上策』『PHP~パフォーマンス向上策(続報)』をご覧ください。

2.PHPの設定

下表のように、php.iniのパラメータのいくつかを適切に設定することが重要です。

phpiniの変更後は、httpdを再起動もしくは設定再読込をして、設定を反映させる必要があります。

php.iniパラメータ 設定の説明 設定例 register_globals 無効にする。 register_globals = Off magic_quotes_gpc 無効にする。 magic_quotes_gpc = Off magic_quotes_runtime 無効にする。 magic_quotes_runtime = Off magic_quotes_sybase 無効にする。 magic_quotes_sybase = Off always_populate_raw_post_data 無効にする。 always_populate_raw_post_data = Off output_buffering 有効にする。推奨設定値は4096バイトとなっています。 output_buffering = 4096(単位:バイト) realpath_cache_size 必要に応じて設定する。PHPがオープンするファイル数が多い場合には、この値を増やすとファイル操作のパフォーマンス向上の効果が期待できます。 realpath_cache_size = 16k(単位:バイト) realpath_cache_ttl 続きを読む »

MySQL 5.5.10 ~パフォーマンスチューニング

WordPressのパフォーマンス向上の目的で、パフォーマンスチューニングを始めました。

httpd層では、別記事に記載したように、mod_chche、mod_disk_cacheを使用して、最低レベルの対策を実施しています。もちろん、まだ上のレベルがありますが、ここでは、DB層のパフォーマンスチューニングを実施します。

WordPressですので、DB層はMySQLです。現時点で最新のバージョン5.5.10を使用しています。

さて、まずは、現状を知ることから。

そこで、MySQLTuner を使用してみます。MySQLTuner は稼働中のMySQLの設定情報やログ情報からセキュリティ、パフォーマンスに関する診断結果と推奨情報を提供してくれるperlスクリプトです。

実際の利用には、まずは MySQLTuner をダウンロードします。

[root ~]# wget mysqltuner.pl –2011-03-30 12:51:21– http://mysqltuner.pl/ mysqltuner.pl をDNSに問いあわせています… 50.56.84.181 mysqltuner.pl|50.56.84.181|:80 に接続しています… 接続しました。 HTTP による接続要求を送信しました、応答を待っています… 302 Found 場所: http://mysqltuner.pl/mysqltuner.pl [続く] –2011-03-30 12:51:22– http://mysqltuner.pl/mysqltuner.pl mysqltuner.pl|50.56.84.181|:80 に接続しています… 接続しました。 HTTP による接続要求を送信しました、応答を待っています… 200 OK 長さ: 41393 (40K) [text/plain] `mysqltuner.pl’ に保存中 100%[======================================>] 41,393 76.2K/s 時間 0.5s 2011-03-30 12:51:23 (76.2 KB/s) 続きを読む »