proxy_cache_lock を使う時は proxy_cache_lock_timeout も明示的に設定する必要がある?

またもやnginx。

proxy_cache_lock on; にすると、キャッシングが有効な時、複数同時にnginxが受けたリクエストを束ねてひとつだけをバックエンドに転送してくれる。ということでonにしてみた。キャッシュが空の状態で ab -c 10 -n 30 とかやっても確かにバックエンドにはひとつしかリクエストが行かない。いいねーーー!

と、思ったのもつかの間。調子に乗ってabしてるとたまにリクエストを束ねてくれない時がある。少し試してみたところ、どうもキャッシュの有効期限が切れてnginxが内部的にパージ処理をしている時が怪しい気がする。

ソース読むかねぇ。。と思ってた所に proxy_cache_lock_timeout を設定するといいよと教えてもらい、設定してみたところきちんと束ねてくれるようになった。

追記: proxy_cache_use_stale updating; も必要みたい http://trac.nginx.org/nginx/ticket/130

コメントを残す

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