読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

apacheからnginxへ。さらにAPCの導入。

WordPress nginx アプリ・ライブラリ・言語 ブログ

このブログのパフォーマンス

このブログはServersMan@VPS+MySQL+Apache+PHP+Wordpressという環境で動作している。構築は自分で行ったけども、このあたりの情報は豊富にあるのでさほどハマることもなくできた。動作も安定しているように思う。

このブログに対してパフォーマンスを気にしたことはあまりなかったけども、運用してもう2年以上たったろうか。安定してくるとパフォーマンスが少し気になってくる。特にWordPressは動的にWebページを作成するのでパフォーマンスが悪いようである。少し前はWP Super Cacheプラグインを入れていたのだけれども、大した効果もなさそうに思えたので無効にしていた。

GTMetrixというサイトがあり、ここにURLを入れるとパフォーマンス計測を行ってくれるので試してみたところ、Page Speed GradeはBだけれどもYSlow GradeというのがDであった。YSlowというのは、Yahooの提唱する「ハイパフォーマンスウェブサイトのルール」に従って、Webページが適切に構築されているかどうかを測定してくれるツールのことらしい。このツールでの測定結果がDだったわけだ。Dということはいろいろ改善の余地があるということだろう。

そういうわけで少しこのサイトのパフォーマンス改善にここ1週間ほど取り組んでいる。

nginxの導入

まずはapacheからnginxにHTTPサーバーを入れ替えることにした。nginxはリバースプロキシのソフトかと思ったが、軽量のHTTPサーバーでさらにリバースプロキシの機能も持っていたのだった。このリバースプロキシ+コンテンツキャッシュでWordpressのパフォーマンスを改善することができるのだ。設定も簡単らしいのでまずはインストールしてみた。インストールにあたっては下記のサイトを参考にした。

Rewrite設定も可能なのでWordPressのパーマリンクも問題なく動く。あとはこのサーバーではnode.jsも動かしているので、/tumblr/ディレクトリにアクセスがあった場合はリクエストをnode.jsに転送するようにもしてみた。

上記サイトを参考にリバースプロキシの設定もやってみた。がどうもうまくいかない。私のサイトは上記サイトと構成が異なるのででそのせいだと思う。コピペするだけでは動かない。もう少し設定方法について研究が必要だ。

コンテンツのgzip圧縮も行ってみた。このおかげでYSlowのランクがDからCに上がった。パフォーマンス的にはapacheとさほど変化はなかった。でもapacheではgzip圧縮はしてなかったから、その分パフォーマンスは向上している気もする。

APCの導入

パフォーマンスアップのためにはPHPもキャッシュするのが良いらしい。私は以前eacceleratorをインストールしていたつもりだったのだが、機能していなかった。設定がおかしかったようだ。こちらの情報を参考にコンパイル・インストールし直してみたが、make時にコンパイルエラーが出てインストールできなかった。

それでeacceleratorと同じくらい有名なキャッシュアプリのAPCを代わりにインストールしてみた。そしてキャッシュしていない状態ABツールを使ってパフォーマンステストを行ってみた。APCで利用するメモリを8M,16M,32M,64Mに設定してパフォーマンスがどう変化するか比較することにした。結果は以下の通りである。このグラフはABの出力をgnuplotでグラフ化したものである。X軸は回数、Y軸はレスポンス時間(ms)となっている。

APCは8Mではキャッシュなしと大差なく、16Mで2倍のパフォーマンスとなる。だが16MB以上のメモリを設定してもパフォーマンスにはほとんど変化がないようだ。とするとAPCのメモリは16Mでいいな。しかし同時接続数が多いとメモリの大きさが効いてくるかなと思って、ABの-Cオプションを10にして試したみたところ、下の結果となった。あんまり変わらないな。これは16Mで決まりですな。

GTMetrixを使いAPCなし・ありで計測すると下記のとおりであった。トータルで1秒ほど速くなったようである。

【APCなし】

【APCあり】

ここしばらくはパフォーマンスアップに取り組むことにしている。