On Mon, 3 Jan 2005, Kpoxa KpoIIIkin wrote:
> Igor Sysoev пишет:
>
> >proxy_buffers задаёт размер буфера и их максимальное число для одного
> >запроса.
> >Буфера выделяются по мере необходимости, то есть, для ответа в 50K будет
> >выделено 2 буфера размером 32К. По мере получения ответа он отдаётся клиенту,
> >поэтому для быстрого клиента число буферов для хранения всего ответа в
> >памяти может быть меньше, чем нужно для хранения всего ответа. Часть ответа
> >начинает записываться во временный файл, когда достингут максимум
> >выделенных буферов. Запись во временный файл делается не постоянно, например,
> >конец ответа в файл не пишется, а есть только в памяти. А середина при этом
> >может находится в файле.
> >
> Таким образом получается, что nginx при проксировании бэкенда получается
> у него ответ целиком, независимо от размера ответа и размера буферов?
> Что будет в случае ответа размером в сотни мегабайт?
> На сервере памяти будет 2-4 гига, имеет ли смысл давать использовать
> 100-200 мегов памяти на поток?
От размера ответа зависит, но в разумных пределах. Максимальный
размер временного файла задаётся директивой proxy_max_temp_file_size,
по умолчанию, 1G. Если ответ больше, то он будет передаваться синхронно.
Можно вообще запретить использовать временные файлы:
proxy_max_temp_file_size 0;
Что касается 100М на поток, то при 2G памяти можно обслужить только примерно
20 потоков. Потом начнётся свопинг. Я бы поставил что-то вроде 1M.
Но в принципе, можно экспериментировать - ручки для настройки есть.
Игорь Сысоев
http://sysoev.ru