On Sat, 18 Dec 2004, Andrew Velikoredchanin wrote:
> Мне нужно получить следующее.
>
> 1. Юзер обращается к фронтэнду, что-бы получить информацию.
> 2. Фронтэнд запрашивает ее у бэкенда.
> 3. На бэкенде запускается некоторый скрипт в одном из потоков апача.
> 4. Скрипт быстро отрабатывает и быстро отдает данные фронтэнду.
> 5. Фронтэнд быстро забирает эти данные, закрывает соединение с бэкендом
> и начинает медленно их передавать клиенту.
> 6. В это время поток апача который обрабатывал этот запрос уже
> становиться свободным для других запросов.
>
> Это сделать реально? Что для этого требуется? Я так понимаю, что кэшь на
> фронтэнде должен быть такой что-бы в него целиком помещался ответ с
> бэкенда? В nginx для такой работы какой размер нужно сделать
> соответствующим - размер одного буфера в проксе или общий размер всех
> буферов?
Именно так nginx и работает.
Первая часть ответа бэкенда принимается в буфер размером
proxy_header_buffer_size. Затем ответ принимается в буфера, заданные в
proxy_buffers. Эти буфера выделяются по мере необходимости, то есть,
proxy_buffers 256 32k;
означает, что при чтении ответа может быть использовано до 256 буферов
размером по 32К. Но если ответ меньше, то и выделено будет меньше.
По получении ответа он отдаётся клиенту частями не более
proxy_busy_buffers_size. Если же все буфера заняты, а клиент не принимает
ответ, то ответ пишется во временный файл.
Игорь Сысоев
http://sysoev.ru