On Mon, 3 Jan 2005, Kpoxa KpoIIIkin wrote:
> Igor Sysoev пишет:
>
> >On Mon, 3 Jan 2005, Kpoxa KpoIIIkin wrote:
> >
> >>Подскажите, можно ли с помощью nginx сделать сделающее:
> >>
> >>перехватывать все соединения к апачу,
> >>проксировать их на апач,
> >>получать ответ от апача (целиком, при условии размера ответа меньше чем
> >>1 мегабайт), закрывать соединение с апачем и медленно отдавать ответ
> >>пользователю.
> >>
> >>кэширование не нужно, нужно добиться максимально быстрого закрытия апача
> >>от соединения с клиентом,
> >>т.к. апач в моей конфигурации очень тяжелый (mod_php, mod_perl и еще
> >>куча всего).
> >
> >Да, именно так ответ и забирается от бэкенда.
> >
> >Если нужно чтобы весь ответ хранился в памяти, то для 1M нужно указать,
> >например, 32 буфера по 32K:
> >
> >proxy_buffers 32 32k;
> >
> >Можно сделать меньше буферов, тогда ответ будет записываться во временный
> >файл.
> >
> proxy_buffers задает размер буфера для отдельного запроса?
> Если таких запросов
> будет 10 000 отдовременно, при среднем размере ответа в 25-50 килобайт,
> то все буфера должны быть в оперативке (ну плюс своп еще) или nginx
> будет создавать временные файлы?
proxy_buffers задаёт размер буфера и их максимальное число для одного запроса.
Буфера выделяются по мере необходимости, то есть, для ответа в 50K будет
выделено 2 буфера размером 32К. По мере получения ответа он отдаётся клиенту,
поэтому для быстрого клиента число буферов для хранения всего ответа в
памяти может быть меньше, чем нужно для хранения всего ответа. Часть ответа
начинает записываться во временный файл, когда достингут максимум
выделенных буферов. Запись во временный файл делается не постоянно, например,
конец ответа в файл не пишется, а есть только в памяти. А середина при этом
может находится в файле.
Игорь Сысоев
http://sysoev.ru