主にWEB関係の話。

スポンサード リンク

MySQLやPHPのパフォーマンスを向上させる方法のメモ。

MySQLやPHPのパフォーマンスを向上させる方法のメモ。
色々な設定があるとは思いますが、ここでは個人的に効果を顕著に感じたMySQLのクエリキャッシュAPCについて書いています。

本当はPHPやらMySQLそれぞれでベンチ取った方が良いとは思うのですが、この記事では、WordPressを設置して、そのインデックスページに対するApacheBenchRequests per second(一秒間に処理されたリクエスト数)のみを見て、その結果で比較しています。
※ApacheBenchはローカルではなく外部のサーバからという微妙な環境で、リクエスト数100、同時リクエスト数10、試行回数はそれぞれ1回という微妙な値でやってます。


まずは、全く未設定な状態での、Requests per second。
実行したコマンドは以下。

ab -n 100 -c 10 テストしたいURI

Requests per second: 2.58

APCの導入と設定

PHPの中間コードのキャッシュや、最適化をしてくれるAPCを導入します。

以下のコマンドでAPCのインストール出来ます。

pecl install APC

が、gcc httpd-devel php-devel php-pear が入って無いとエラーが出るので、入って無い場合は入れて下さい。

RHEL・CentOS・Fedoraの場合は…

yum install -y gcc httpd-devel php-devel php-pear pcre-devel

と、するだけで入って無いものは入ります。

/etc/php.d/apc.iniというファイルを新規作成し、以下を記述します。

extension=apc.so

Apacheを再起動します。

service httpd restart

Requests per second: 6.80

2.5倍くらいになりました。

補足:
/usr/share/pear/ にある apc.php をドキュメントルートにコピーする事で、現在のAPCの設定などを確認出来ます。
また、apc.php

defaults('ADMIN_PASSWORD','password'); 

のpasswordの部分を任意の値に書き換える事で、apc.phpへのログインが可能となり、キャッシュクリアなどが出来るようになります。

あと、apc.php中のRuntime Settingsに表示されている値は、/etc/php.d/apc.ini
項目名=値
という形で記述する事で変更出来るので、必要に応じて変更してみて下さい。
具体例としては…。

apc.shm_size=64M

など。
apc.shm_size はAPCに割り当てる最大メモリサイズ。

my.confの設定

MySQLのクエリキャッシュの設定をします。
多くの場合クエリキャッシュを利用した方がパフォーマンスは向上する気がします。
デフォルトでは無効(query_cache_size=0)となっているので、以下を/etc/my.cnfに書き足し、有効化します。

query_cache_size = 16M
service mysqld restart

とりあえず16MBに設定して、ApacheBenchしてみると…
Requests per second: 8.21
ちょびっと向上した気がします。

あと、innodbを利用しない場合は my.cnf に

skip-innodb

を追記しておくことで、リソースの節約が出来ます。

my.cnfではほかにも様々な設定が可能ですが、自分の環境で色々試してみた所、それ程大きな差が見られなかったので、省きました。
MySQLのチューニングについては、以下のサイトが詳しいので、興味のある方はどうぞ。
はじめてのMySQLチューニング – ThinkIT

補足:
キャッシュサイズは自身のサーバのメモリ量や、使用量などに応じて変更して下さい。

追記

この記事では Requests per second のみを見ていますが、ApacheBenchではほかにも様々な有用な情報が表示されます。

スポンサード リンク

人気記事

最近の投稿

カテゴリー

タグ