Daily Archives: 2016年3月21日

php56+OPCache+APCuの威力

BudgetVMを使い始めて、少し経つのだが、現在のロケーションは、Dallasにある。
もちろん、日本からのアクセスでは、それなりに遅延があるので、そこそこのスピードしか出ないのだが、ネットワーク遅延以外にも、Apache+MySQL+WordPressという比較的重い処理では、最適化が重要である。

Tokyoからのネットワーク遅延

# ping -c 5 px1.xaffy.net
PING px1.xaffy.net (192.157.245.52) 56(84) bytes of data.
64 bytes from 52.245-157-192.rdns.scalabledns.com (192.157.245.52): icmp_seq=1 ttl=51 time=144 ms
64 bytes from 52.245-157-192.rdns.scalabledns.com (192.157.245.52): icmp_seq=2 ttl=51 time=144 ms
64 bytes from 52.245-157-192.rdns.scalabledns.com (192.157.245.52): icmp_seq=3 ttl=51 time=146 ms
64 bytes from 52.245-157-192.rdns.scalabledns.com (192.157.245.52): icmp_seq=4 ttl=51 time=144 ms
64 bytes from 52.245-157-192.rdns.scalabledns.com (192.157.245.52): icmp_seq=5 ttl=51 time=148 ms

--- px1.xaffy.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4370ms
rtt min/avg/max/mdev = 144.931/145.856/148.298/1.370 ms

この値は、Tokyo –> Dallas:145.8(ms),Tokyo –> Los Angeles:114.2(ms)と日本から比較的近いLos Angelesでも、8,800km前後離れているので、良くして、せいぜいのところが、100(ms)前後である。
しかし、最近当確を現してきた海外のKVM仮想化などのサーバーを借りてみると、たとえ、114(ms)前後のネットワーク遅延でも、そこそこのレスポンスが得られるので、リクエストあたりのクエリーが多いWordPressなどの応答には、リクエストあたりの遅延は、クエリー数それぞれがネットワーク遅延の影響を受けるので、トータル的に見ると、ばかにならない大きさの遅延に拡大してしまう。

CPUのパワーやメモリー搭載量にもよるが、phpのバージョンを上げ、phpモジュールベースのCacheを使ったり、MySQLのクエリーCacheを使うと、良くすれば、遅延の解消が期待できる。
これに関しては、距離が近いところよりも、遠いところでのCacheに対する効果は大きく、如何に速く、リクエストを完結できるかによって、ブラウジング性能には大きな差が付く。

これまで、ネットワーク遅延が、145(ms)ならば、ある程度仕方ないと考えて来たのだが、これまでの、php5.5.x系から、php5.6.x系や、php7.0.x系へ移行すると、大幅なパフォーマンスの向上が期待できるため、少し諦めていたWordPressをもう一度確かめてみることにした。

結果はご覧の通り、見事なまでの変貌ぶりを示してくれているわけである。
OPCacheの性能を期待する場合には、できるだけオンメモリ-で動作させ、無用なディスクIOが発生しないように工夫することで、アクセススピードの向上が出来る。

又、並列的にWordPress上のCacheを有効にするのも効果がある場合もあるが、大抵の場合、HDDアクセスの遅延も、忘れてはならない遅延なので、SSDを採用しているようなサーバーでは効果があっても、HDDベースのサーバーでは必ずしも良好な結果とならないので、この際、WordPressのCacheは使わないほうが良いと判断した。

当面のところ、これでしばらく運用してみる予定である。

旧来の導入記事は、他所にさっさと移してしまったので、当面はそちらとの比較が出来ると思う。
リンク先:http://px24.xaffy.net/