обновление кэша при использовании 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