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