обновление кэша при использовании proxy_cache
Anton Yuzhaninov
citrin at citrin.ru
Wed May 6 13:19:05 MSD 2009
При использовании proxy_cache может возникнуть такая проблема - в тот момент когда данные в
кэше устаревают на бэкенд начинают проксироваться все запросы, хотя для обновления кэша
достаточно только одного запроса.
Например:
Страница X запрашивается 100 раз в секунду.
На бэкенде эта страница генерится 1 секунду (если послать 1 запрос).
В тот момент когда данные в кэше устарели, но обновленный ответ еще не закэширован, все
приходящие запросы начинают проксироваться. В результате бэкенд получает 100 параллельных
запросов на страницу Х, из за чего становится перегружен и генерит ответ не 1 секунду, а
значительно больше. И получается положительная обратная связь - больше параллельных запросов -
дольше ждать завершения первого запроса, который обновит кэш.
Решение пока видится только такое - на бэкенда разрешить один (или несколько) параллельный
запрос, а на все остальные выдавать ошибку 503.
А в кэширующем nginx написать proxy_cache_use_stale http_503;
Есть ли более красивые решения?
--
Anton Yuzhaninov
More information about the nginx-ru
mailing list