ブログサーバートラブったので、CloudFlareとWP Super Cacheを切り離して安定させた話。

Linux

このブログが表示不安定になっていたので、CDNのCloudFlareとWordpressモジュールのWP Super Cacheを使うのをやめてみました。しばらく様子を見つつ、次の対策を考えます。

いやなんていうか、Simple is bestなのかもしれない。

発端は、CloudFlareから来ていた一通のメールです。内容は「HTTP/2とSPDYに対応したぜ」という内容だったわけですが、そういえばSPDYはSSLじゃないと効かなかったけど、HTTP/2になると何か嬉しいのかなぁ・・・と、漠然と読んでいたわけです。

で、ふと気になって、Google Search Consoleを見てみたわけ。何か変わったかなぁと。そしたら、エラー出てた。

スクリーンショット 2015-12-14 11.23.05

・・・そういえば。最近、ブログアップしているときにエラーになることが何度かあったんですが、一時的なものかなぁ、と思っていたんです(※えーと、Softbank Airの回線を疑いたくなるんですよ、こういう場合・・・)。しかし、そうではなく、ブログサーバーへの接続そのものが上手く行っていなかったらしい。

Fetch as Googleで試してみましたが、やはりエラーになる。エラーメッセージを見ると「ERR_INCOMPLETE_CHUNKED_ENCODING」。チャンクサイズとダウンロードされたコンテンツサイズに差異があるためエラーになっているらしい。Chromeの開発者モードで見ると、確かにトップページコンテンツのダウンロードが終わらないように見える場合がある、と。

試しに、Macからcurlでダウンロードしてみると、81920バイトで止まりました。あまりに綺麗な数字で止まったので、この時点で、キャッシュかCDNが被疑です。

まずは、渦中のCloudFlareを「開発者モード」でバイパスさせてみますが、事象変わらず。仕方がないので、DNS設定を変更して、CDNを完全に使わないようにしてみた。そうすると、うまく接続はできるようにはなりました。

ただ、今度はサーバー本体のキャッシュが悪さをしているようで、表示が乱れる状態に。キャッシュクリアしても、モバイルサイトがきちんと表示されない状況が続きました。そこで、思い切って、WP Super Cacheもアンインストールしてみたと。

ここまでやって、やっと、正常な状態に戻りました。良かった。

何がどう悪さをしていたのかは未だに釈然としませんが、いろんなキャッシュを重ねた結果、訳が分からない状態になっていたことは間違いないので、今のシンプルな構成はこれはこれでアリかな、というのが今の感触です。特にCloudFlareはあまり悪い評判も聞かないのですが、ちょっと様子見ようかなあと。

じゃぁこれでアクセラレーションが無くなったのかというと、そうでも無くて、phpのOPCache、apcu、そしてmod_pagespeed(+memcached)が有効なので、実際のところ、アクセスした感触には体感的な差はありません。Page Speed Insightsで見ても、スコアはさほど変わっていないと。ん?つまり、CDNもWP Super Cacheも、そこまで効果無かった、ってことか・・・

種明かしをすると、実はインフラ更新してるんで、これも効いているかと思います。このブログサーバーは、元はCentOS標準のMySQL、PHPで動いていましたが、今はMaria DBにphp 5.6になっていて、すべて個別dockerドメインの構成になっています。個人的には最適構成を煮詰めたつもりなので、これも効いてるかなと(詳しくは別エントリで)。

Webサーバーだけ、今だにApache 2.2を使っています。理由は、CloudFlareが実体はnginxのリバースプロクシだったからなんですが、今回、CloudFlareを外してしまったことで、Webサーバーをnginxに切り替える踏ん切りが付いたかな。ちょっと残念な結果ですが、これはこれで、まぁ良かったのかなとも思っています。

そういえば、mod_pagespeed+memcachedの構成、これ意外に好感触です。Wordpressのキャッシュ系モジュールにも、memcachedを使えるものがあり、過去幾つか試したこともあるのですが、印象はイマイチなものが多かったと。他方、mod_pagespeedは、memcachedを使わせることで、目に見えて動きが良くなった印象があります。この構成はちょっとお勧め。mod_pagespeedをmemcached無しで使うのは勿体無いと思ってます。ただ、unix domain socketで繋がらないのが玉に瑕ですが。

というわけで、CloudFlareとWP Super Cacheでトラブった話でした。やっぱり性能は難しいね。キャッシュは鬼門。Simple is best、と。

コメント

タイトルとURLをコピーしました