proxy cache stampede

Alex Vorona voron на amhost.net
Ср Сен 21 17:29:47 UTC 2011


21.09.2011 19:15, Vladimir Stavrinov wrote:
> On Wed, Sep 21, 2011 at 06:26:14PM +0300, Alex Vorona wrote:
> 
>> Отдавайте редирект туда, где файл существует, в то время как сами
> 
> А где же он ещё существует, если не на backend сервере? 
Либо вместо редиректа - проксирование на backend без буфферизации.
> 
>> закачиваете этот файл в
> 
> Это я не понял. Кто закачивает и как, если мы запрос уже куда - то
> перенаправили? Или я должен в ручную это делать?
Это уже как вы сделаете. Можно и nginx научить закачивать, например потанцевав вокруг
post_action, можно анализировать access_log и тп.
> И какой в этом смысл,
> если все такие запросы пойдут на backend сервер?
- запросы будут обслужены
- подтянется в локальное зеркало/кэш файл и после этого запросы к нему будут обслужены
фронтендом.

Альтернатива - подождать реализации busy locks в nginx, как заметил Максим или ускорить её
вложением некоторой суммы.
>> этой проблемы, proxy_store тут в помощь.
> 
> Я не вижу там никаких средств управления хранилищем. Как его чистить? По
> какому критерию?  Как ограничить объём? Или это опять нужно делать
> вручную? 
cron+find+sort+rm удаляют некоторое число файлов с самым старым atime по достижении
нужного % заполнения хранилища.

>> А по-вашему, что должен делать nginx, когда приходят ещё запросы на
>> один и тот же uri, отсутствующий в кэше на момент первого запроса и
>> уже тянущийся в 1 поток?
> 
> Я не знаю, но наверно как то можно было бы сначала брать первую часть
> данных из одного временного файла, а потом, после удаления временного
> файла продолжить подкачивать уже из кэша. Или же не удалять временный
> файл до тех пор пока не будет обслужен полностью последний такой запрос.
> Но как бы там ни было, закачивать многократно одни и те же данные - это
> в принципе, это в корне не правильно не зависимо от размера файлов.
А c range-запросами(как раз для больших файлов актуально) и  стримингом это совместить
будет нетривиально.



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