PlayでMemcachedを使っているとたまに存在するはずのキーでnullが返ってくることがある。
ソース追ったらPlayのMemcachedImplでgetメソッドの実行に1秒以上かかったらそこでタイムアウトするようになってたよ。。。(--
Memcachedはherokuのアドオンをそのまま使用しているのでおそらくアメリカ東海岸にある。
なので、日本のlocalhostからテストすると割とすぐにタイムアウトしちゃうね。。。
東海岸のherokuサーバー上から使う場合は多分タイムアウトすることはないと思うけど。
ちなみにMemcachedImplのタイムアウトコードはハードコードなんで設定を変更することもできない。
対策としては
A. localhostではMemcachedを使わない設定にする
B. 近場に別のMemcachedを立てて、localhostからはそれを使うようにする
の二つが考えられるけど、Aは実行コードが変わるのであまり気が進まないし、Bは面倒くさい。
どうしたもんだろ?
ていうか問題はそこじゃなくて、Cacheを使う際に「存在するはずのキーでnullが返ってくることはありえる」ということをちゃんと認識しておくことなんだよな。
0 件のコメント:
コメントを投稿