Re: Изменение процедуры обновления кэша
Vadim Lazovskiy
vadim.lazovskiy at gmail.com
Sat Aug 24 10:40:20 UTC 2013
Здравствуйте.
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_lock
24 августа 2013 г., 14:29 пользователь stitrace <nginx-forum at nginx.us>написал:
> Опишу некоторые, особенности работы модуля PURGE nginx, с которыми я
> столкнулся и которые затрудняют его использование в hi-load:
>
> Как известно, механизм purge в nginx призван для управления кэшем,
> единственным его предназначением является очистка кэша для необходимого
> урла
> на сайте.
>
> Мы могли бы закэшировать страницу с урлом http:://mysite.ru/main/, к
> примеру, на сутки и реализовать в форме отправки сообщения нашего сайта
> инициацию запроса http:://mysite.ru/purge/main/, который, при должной
> конфигурации, очистит кэш для страницы /main/. На первый взгляд, всё
> выглядит идеально и придраться не к чему, но если разобраться, то не так
> всё
> гладко, когда дело касается hi-load. Дело в том, что nginx производит
> очистку кэша в таком порядке:
>
> a) После выполнения PURGE запроса он удаляет закэшированную копию страницы
> из хранилища.
> б) Ждёт сгенерированную, новую страницу от бэкэнда.
> в) Отдаёт её пользователю и кладёт в кэш, далее продолжая раздавать её
> пользователям.
>
> Всё шикарно, но при выполнении пункта "б" он, если к нему обращается
> клиент,
> не находя страницу у себя в кэше, пропускает все запросы к фронтэнду.
>
> Теперь допустим сценарий, ваша страница /main/ генерируется на бэкэнде 1
> секунду и он настроен таким образом, что максимальное количество клиентов
> на
> нём не должно превышать 300. Посещаемость /main/ - 600 запросов в секунду,
> каждый новый клиент увеличивает время отработки запроса к фронтэнду на
> 0.3%.
> Мы видим, что, количество клиентов, которые пройдут на бэкэнд, превышает в
> два раза разрешённый лимит, а время выполения запроса, в первые полсекунды,
> будет расти по экспоненте и скрипт, в лучшем случае, завершит работу через
> несколько секунд, а в худшем, бэкэнд вернёт 502 ошибку, из-за ограничений
> на
> время выполнения кода на фронтэнде, то есть, фактически, уронит ваш проект.
>
> Точно такая же ситуация будет, если элемента ещё нет в кэше и на него
> внезапно начинают обращаться пользователи (допустим произошла публикация
> новой страницы).
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,242182,242182#msg-242182
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
--
Best Regards,
Vadim Lazovskiy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130824/c814e874/attachment.html>
Подробная информация о списке рассылки nginx-ru