Re: долгий скрипт( вопрос по настройке)
Maxim Dounin
mdounin на mdounin.ru
Вт Фев 9 20:21:52 MSK 2010
Hello!
On Tue, Feb 09, 2010 at 10:38:27AM -0500, szcheh wrote:
> есть связка
> nginx - apache - long_time_script.pl
>
> в енджинксе стоит проксирование на апач с кешированием
> результатов выдачи скрипта long_time_script.pl
> допустим proxy_cache_valid 200 1m;
> первый запрос на получение результатов long_time_script.pl
> инджинксом "лезет" в апач за ним.. результат кладет в свой кеш..
> на все последующие запросы которые приходят к нему в течении 1
> минуты он отвечает данными из своего кеша.
>
> грубо представим ситуацию, что long_time_script.pl очень тяжелый
> и работает не меннее 2х секунд и есть кучу народу,которые со
> скоростью 10 запросов в сек хотят результаты этого скрипта...
> в момент когда в кеше нет результатов выполнения скрипта
> инджинкс все запросы отправляет в апач в течении тех самых 2х
> секунд.. в нашем случае апач получает 20 запросов, которые
> естественно тормозят друг друга..аналогичная ситуация возникает
> на границе времени жизни результатов в кеше, т.е через 1 минуту.
>
> возможно ли как-нибудь объяснить енджинксу, что он уже отправил
> один запрос и надо обработку остальных 19 ребят с аналогичными
> запросами притормозить(не отправлять их запросы в апач ) до
> прихода каких-либо результатов первого запроса, а потом выдать
> им готовые данные уже из кеша?
> ничего похожего в настройках не нашел.
Ближайшее что есть - это
proxy_cache_use_stale updating ...;
В этом случае по истечению срока валидности ответа в кеше nginx
отметит что он пошёл его обновлять - и пойдёт обновлять одним
запросом. Все остальные запросы будут отдавать пользователям
устаревший ответ (пока не прилетит новый).
В общем случае это busy lock'и, и их пока нет.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru