WordPressの高速化

自分がマジメにやる時のWPの高速化方法について。一応、色々と設定とかをして、仮想(お名前.com KVM, MEM 2GB, CPU:3)サーバ1台で 10,000 access/sec くらいは普通に捌けてCPU負荷もほとんど上がらない感じには出来る。つかキャッシュだけどねw
以下、全部やっても1時間もかからずサクっと出来るはず。

– 構成
NginX + WordPress(FastCGI/Apacheどっちでも) + MySQL
まぁ、普通の3層構成っすね。

– 路線
簡単なチューニングとNginXのキャッシュを使う。

– 方法
1. APCを使う
これはオンにすれば即完了。迷う事無し。

2. ngx_pagespeedを入れてみる
多少は変わる。気休めだと思うけど。

3. NginXでgzipを有効にする。
いわゆるコンテンツの圧縮転送。高速化というか、クライアント側にも優しくなれる。

4. NginXのキャッシュを使う
これが本質。普通にNginXのキャッシュを使うと、WP側で記事の更新をしてもキャッシュがクリアされるまで記事が更新されないという残念な事になる。また、WordPressのSuperCacheなる物も結局はAP層(WP)までアクセスが来るので、出来るだけNginX側で全て完結させる。流れ的には以下。

4.1. nginx cache purgeモジュールをNginXに導入する
4.2. Word Press側にNginx Proxy Cache Purge WordPressをプラグインからインストール
4.3. NginX側のconfig, WP側の設定をして終わり。

実際の個別の方法とかはググれば出てくるからそれを参照に。あとwp-adminをキャッシュ対象から外すのも忘れずに。基本的に全部NginX側でキャッシュ、記事やコメントとか変更があったらそのページだけPurgeするという素敵な感じになる。他に色々とプラグインを入れて重いぜ…って事もあんまり関係無くなる。
WordPress側のキャッシュを使う例がよく散見するけど、NginXを使っているならそこで完結させた方が良い。あとどーしても、ApacheでWord Pressを動かしたいぜ!!という理由があれば、Varnishを使うとかってのもあるけど、余計なプロセスは出来れば動かしたく無いからね。

– その他(備忘)
カーネルチューニングとかってのもあるけど、あんまり劇的には変わらんでしょう。他にDBのバッファを増やすとかも、ただ、ふつーのVPSのメモリ(2G-4G)でそれをやった所であんまり何かパッとしないもんね。
他に自分がよくやったりする手法では、PHPのプロセス事前生成& Persistenceを有効にしたり、NginX/Apacheの基本的な設定の確認・見直しとか。PHPってマルチスレッドとかじゃなく、1アクセスに対してforkされた1個のPHPプロセスが対応して動作するから、仮に1アクセスに1秒かかるプログラムの場合、同時100アクセスが瞬間にきたら100個プロセスが無いとあとはキュー待ちというか、backlogに回って順番待ちになる。つまり、FastCGI/Apacheでのプロセス数とAPの秒間の性能、更にCPU数(LoadAvgのキュー)といった感じで可視化される訳で、結局PHPみたいな1リクエストに対して1プロセスで応答する物って、アクセス数を捌くためには最終的にはプロセス数・メモリ・CPU数・サーバ数とリクエスト数の関係がスケールする事になる。ThreadingしたところでCPUリソースは結局消費される訳だけどね。それを避けるために、キャッシュとかを使って軽くするって感じー。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください