この1年で劇的にアクセスが増えすぎてサーバが耐えられなくなってきたので、クラウドのスペックを上げると同時に、本格的にアクセス増による負荷対策としてこれまで見送ってきたものをいろいろやってみたよ。
まずCDNとして、そしてDDoS攻撃対策として有名なCloudflareを導入。
おわかりいただけるだろうか……導入したのは深夜3時で、そこから12時間ちょいが経過しただけなのだが、リクエスト数はなんと2万8759!!そのうち7268についてはキャッシュとして代わりにCloudflareが応答したので、その分だけ負荷が減っているという仕組み。いやー、なんかめちゃくちゃアクセスが多くてやばいなー、重いなーとは思っていたのだが、こんなに超絶大ヒットするサイトになってしまっていたとは……。やはり2万本以上もエントリーがあるとすごいな。
帯域消費量もすさまじく、なんと12時間ちょいで674.48MB!24時間で1GBを超えるので、スマホの1か月の通信量で使えるのが7GBだとするとわずか1週間でくるくるぱー。
これらの膨大なアクセス数による負荷を支えるため、Zend OPcacheを導入。キャッシュへのヒットは99%なのでかなり効果がある。割当分の空きメモリについてはまだ余裕があるのでもう少し削ることもできそう。
また、APCuを導入し、W3 Total Cache経由で使用することでより高速化を実現。Page Cache Method・Database Cache Method・Object Cache Methodで「Opcode: Alternative PHP Cache(APC / APCu)」を選択してオン(Opcode Cacheは前述の「Opcode:Zend Opcache」に自動設定される)、Browser Cacheはオフにすることでgzipなどの影響による文字化けを回避。というかブラウザキャッシュはCloudflareに任せる方向で設定。このあたりはまだチューニングの余地がありまくり。ヒット率を99%まで持って行かなくては。それにしてもフラグメント化がひどく、本来なら円グラフが表示されていた部分が何も見えなくなってしまった。
このような感じで粛々と進めています。