Re: proxy_cache, особенности

Sergey Shepelev temotor at gmail.com
Fri May 15 20:54:40 MSD 2009


2009/5/15 Alex Mizrahi <alex.mizrahi at gmail.com>:
> hi
>
> возникло желании кэшировать некоторые ответы бэкенда, т.к. бэкенд
> на некоторые запросы отвечает долго и не поддерживает большого
> кол-ва одновременных соединений. насколько я понимаю, это можно
> сделать посредством proxy_cache, но хотелось бы уточнить некоторые
> особенности..
>
> 1. если приходят несколько запросов на один и тот же url, оно отправит
> их всех на backend или дождётся пока получит один ответ?
>

Конечно, nginx ничего не ждёт.

> более подробно, что я имею в виду, ситуация такая: некоторые запросы
> нужно кэшировать на очень небольшое время, ну положим, 10 секунд, т.к.
> информация в них постоянно обновляется, и в то же время на них может быть
> большой "спрос", положим 50 запросов в секунду и backend вычисляет
> ответ довольно долго, положим, 1 секунду. (понятное дело, если отправить
> все запросы на backend, он загнётся, ну, для этого мы и кэшируем.)
> значит каждые 10 секунд или вроде того объект устаревает и запрос идёт
> на backend.
>

Кеширование делается для разгрузки бекендов, чтоб не дергать их ЛИШНИЙ
раз. Но если бекенд погибает под нагрузкой без кеша - значит таки да,
надо улучшать бекенд. Например ставить второй. Или ставить запросы в
очередь. В любом случае, всё должно так же стабильно работать без
кеша. Просто медленнее. Или я неправильно понял "он загнётся".

Возможны разной степени извращенности схемы ограничения конектов между
nginx и бекендом. Самые простые: поставить между ними haproxy и
настроить/пропатчить бекенд.

> вопрос: в течении той секунды что вычисляется ответ на запрос,
> пошлёт ли nginx остальные 49 запросов на backend, или будет ждать пока
> не прийдёт ответ на первый запрос и отошлёт всем 49 что накопилось за
> это время кэшированный ответ?
>
> (понятное дело, что бороться с этой проблемой можно улучшая backend,
> но определённо эту проблему проще решить спомощью proxy.)
>
> 2. вообще по поводу быстро-устаревающих объектов, есть ли какие-то
> ограничения или особенности? я так думаю чтобы винт зря записью не
> напрягать, лучше кэш разместить где-нибудь в районе /tmp..
>
> with best regards, Alex 'killerstorm' Mizrahi.
>
>


More information about the nginx-ru mailing list