[定期]PHPのAPCを使う時は SafeApc を使おう

最近apcの話をしてるときにSafeApcの事を知らない人がいたのでこちらにもメモ。

composer 一発でインストールできて、インターフェイスもAPC直で使うのとほぼ同じです。
詳細は上にあるnazoさんのブログエントリを見てもらうのが分かりやすいのですが、違いとしては1リクエスト中での時間ずれによるキャッシュの意図しない破棄をふせげるのと、キャッシュのオールクリアを安全に行えるようになっている所です。

APC がいいのか memcached (とかRedis)がいいのか問題

例えばロードバランサーの後ろにフロントサーバが50台くらいあるような環境でキャッシュサーバとしてmemcachedを用意した場合、でかいオブジェクトをSerializeしてまるごと突っ込むようなひどい運用をしているとキャッシュデータが大きくなってネットワーク帯域に負荷がかかったりする事があります。
APCを利用すると、各フロントサーバー内で自前でキャッシュデータを持つ事になるしプロトコル的にネットワーク通信が行われないので帯域の心配をする必要がなくなります。これはfetchとstoreの速度面でもメリットがあります。
一方でキャッシュコントロールという観点でいうと各フロントサーバーの上にキャッシュを作るAPCの場合、キャッシュがのってくるまでの時間がかかる上に、システムのバージョンアップに合わせてきれいにキャッシュをスイッチするのが面倒です。

どっちがいいのかは環境や構成によって変わってくると思うのでそれぞれのメリットとデメリットを比較して状況にあう選択をしたいですね。(技術だけで判断するのが正解じゃなくて、例えば自前で全部構築するならAPCでインフラエンジニアとやってるならキャッシュサーバたてるとかね…)

投稿者: halt

PHPプログラマ。

コメントを残す

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

ねこ認証:9つのパネルの中からねこを3匹選んでください