Re: Кеширование проблема: перестает кешировать

Maxim Dounin mdounin at mdounin.ru
Mon Aug 19 10:52:35 UTC 2013


Hello!

On Mon, Aug 19, 2013 at 12:44:41PM +0300, Gena Makhomed wrote:

> On 19.08.2013 9:44, Dmitry E. Oboukhov wrote:
> 
> >кешменеджер запустился, НИ ОДНОЙ ошибки в логах nginx нет. все хорошо.
> >потом... бац! на хосте нагрузка ~15-20.
> >смотрим в чем дело - апач все поел.
> >смотрим на чем - на закешированных запросах: GET /cached/бла/1234
> >
> >рестартуем nginx - нагрузка падает. потом в самый наплыв пользователей
> >опять... бац: кеш прорвало.
> >
> >благо что с нагрузкой на хосте 15-20 апач справляется и без кеша.
> >сайт тупит конечно, но работает.
> >
> >а когда кеш живой, то нагрузка 0.8-1.
> >
> >сейчас поставил nginx-лайт 1.4 (Debian/wheezy).. вчерашний пик
> >пользователей пережили вроде без прорыва кеша.
> >но правда и 1.2.1 его прорывал тоже не каждый раз.
> >
> >и самое интересное что когда прорывает кеш в логе ну ни записи.
> >просто пришла 1000 запросов. и апач бы должен был выполнить один, а
> >ему достается 600 из этой тысячи.
> 
> кроме
> 
> proxy_cache_lock      on;
> proxy_cache_use_stale updating;
> 
> есть еще директива proxy_cache_lock_timeout и по умолчанию там:
> 
> proxy_cache_lock_timeout 5s;
> 
> не может быть такой ситуации, что когда "самый наплыв пользователей"
> backend не успевает ответить за 5 секунд?

+1

Это штатный вариант, когда запросы к одному и тому же 
ресурсу могут попасть на бекенд в больших количествах при 
используемых настройках.

> в документации совсем не написано как себя в такой ситуации поведет
> nginx, возможно он тогда отпускает все клиентские запросы backend ?

Поведение документировано в описании proxy_cache_lock 
(http://nginx.org/r/proxy_cache_lock):

: Other requests of the same cache element will either wait for a 
: response to appear in the cache or the cache lock for this element 
: to be released, up to the time set by the proxy_cache_lock_timeout 
: directive.

После истечения времени, заданного директивой 
proxy_cache_lock_timeout, запросы, очевидно, перестанут ожидать 
cache lock'а.

-- 
Maxim Dounin
http://nginx.org/en/donation.html



Подробная информация о списке рассылки nginx-ru