NOTES : 2010-10-08 : WEB

さくらのVPS CentOSでサーバ構築 13 – パフォーマンス

さくらのVPS CentOSでサーバ構築 作業ノート13回目。
前回までで、ひととおりの初期目的は果たせたので、今回は高速化とメモリの効率化をしたいと思います。

PHPアクセラレータ

まずはPHP高速化の定番。PHPアクセラレータです。APC、eAccelerator, XCache 等ありますが、インストールが簡単で、そこそこ性能がいいAPCをインストールします。

APCは Remi リポジトリからインストールできます。リポジトリ導入は前々回の記事を参照してください。

[root@ ~]# yum list php-pecl-apc
php-pecl-apc.x86_64                                    3.1.4-2.el5.remi     remi

[root@ ~]# yum install php-pecl-apc

下記のファイルを編集することで、バッファサイズ等を設定変更可能ですが、今回はデフォルトのままで様子を見ようと思います。
また、設定で apc.include_once_override を有効にしたら、WordPressの管理画面が真っ白になったりしたので、設定には注意してください。

vi /etc/php.d/apc.ini

インストールしたらhttpdを再起動します。

[root@ ~]# /etc/rc.d/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

テスト用のphpファイルがあるので、それをWebから見れる場所にコピーします。

[root@ ~]# cp /usr/share/doc/php-pecl-apc-3.1.4/apc.php /var/www/html/www.domain.com/

管理者情報を設定します。

[root@ ~]# vi /var/www/html/www.domain.com/apc.php

defaults('ADMIN_USERNAME','apc');       // ← ログインID
defaults('ADMIN_PASSWORD','password');  // ← 初期値の「password」以外にする必要があります。

これで、http://www.domain.com/apc.php にアクセスすれば、キャッシュ状況を確認できますので、定期的にチェックして設定を見直すといいでしょう。

ちなみに簡単なベンチ結果です。

[root@ ~]# ab -n 100 -c 10 http://www.domain.com

で計測したところ、

Requests per second:    9.44 [#/sec]
  ↓
Requests per second:    16.12 [#/sec]

となりました。しかも、心配していたメモリ使用量はほとんど変化無しでした。
おそらくアクセスが増えてキャッシュが多く貯まれば、メモリの使用量も増えると思います。

PHPの設定変更

デフォルトだとzlibが無効になっているので、有効にしましょう。

[root@ ~]# vi /etc/php.ini

zlib.output_compression = On

MySQLのキャッシュ有効化

もう一つ定番なMySQLのキャッシュとバッファの設定をしてみます。

[root@ ~]# vi /etc/my.cnf

query_cache_limit=1M
query_cache_min_res_unit=4k
query_cache_size=24M
query_cache_type=1
key_buffer = 16M
sort_buffer_size = 1M
read_buffer_size = 256K

MySQLを再起動します。

[root@ ~]# service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

Apacheの設定変更

512Mのメモリで稼動させる為にApacheの設定を見直してみましょう。
公式のマニュアル を参考にしました。

[root@ ~]# vi /etc/httpd/conf/httpd.conf

Timeout 45                  #接続を切るまでの時間
KeepAlive On                #接続の継続を許可
KeepAliveTimeout 3          #継続時間
<IfModule prefork.c>
StartServers       5        #起動時のプロセス数
MinSpareServers    5        #待機プロセス数の最小個数
MaxSpareServers   10        #待機プロセス数の最大個数
ServerLimit       64        #プロセス数の上限
MaxClients        64        #稼動プロセスの最大個数
MaxRequestsPerChild  4000   #一つのプロセスが実行するリクエスト数
</IfModule>

接続の保持時間を短縮して、同時接続数を減らしました。これは様子を見ながら調整しますが、アクセスが少ないので当面平気でしょう。

WordPressのプラグイン

WordPressのプラグインを入れる事でもパフォーマンスアップが可能です。
キャッシュ系で一番有名な WP-SuperCache は完全にHTML化してしまい、mod_rewriteで表示ファイルを差し替える方法で、キャッシュファイルがある場合は、PHPを一切使わないのでパフォーマンスもメモリ効果もいいと思います。

また、余計な転送を減らす Head Cleaner というプラグインは、HEAD内を少なくして、JavascriptやCSSを圧縮してまとめることで高速化させます。これだけでも、サイトによっては目に見えて違ってくるかと思います。

今日のハマりポイント

  • yumからインストールした時の「apc.php」の場所は普通にソースから入れたのとは違い、「/usr/share/doc/php-pecl-apc-3.1.4/apc.php」にあった。
  • APCインストール後のWordPressの管理画面が真っ白になったが、原因はapcの設定の「apc.include_once_override=1」だった。

コメント (0件) - 表示・投稿 ▼