Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: proxy_cache, особенности
- To: nginx-ru@xxxxxxxxx
- Subject: Re: proxy_cache, особенности
- From: Sergey Shepelev <temotor@xxxxxxxxx>
- Date: Fri, 15 May 2009 20:54:40 +0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=IBOme2g4oZuEz8FCb+k8fooqxmT6u7K5UfLT3Dz2xmY=; b=rXjmNJvxKaShl3923pcvtzecyNlwcy7KSFNxHsDwvx+PfZkkcb4SQ/G5EgLZAEzc21 9gw+e4lGQs1Uaf+BUvG4sScYXVJDrAQkV8Bt4rSHyw0tunIorlNuSJah/koYdaRJqmq/ 0+Ch7KlOp8xR85gYYepEt4C0uDCWbyrrRqPCg=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=EzZHbjazZdWDxiKYHTxPFRoT5L9oCZaM2osvnYYrckM/jEEK2K/a6A2hdBdzuAbDC1 yYOzOItFj+OJ+2PoYk7Klpj22EYEzX6vzDli7HLhrMUbJ+5asizitRgWYDkuoceLfll2 XJsNm63R1Mtl/mGQ7VWvCiAO1hQBpmyayyX+I=
- In-reply-to: <0CFA8830707F4C019A9E0084797E23DF@killer>
- References: <0CFA8830707F4C019A9E0084797E23DF@killer>
2009/5/15 Alex Mizrahi <alex.mizrahi@xxxxxxxxx>:
> 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.
>
>
|