Не отдаёт ответ пока буфер не наполнится

sofiamay nginx-forum at nginx.us
Thu Dec 18 17:35:35 UTC 2014


Стоял Apache и веб-сервис (php), который работает постоянно и выдаёт ответ в
произвольные моменты небольшими кусочками, всё работало превосходно. Т.е.
открываем в браузере адрес и он так может висеть часами выдавая раз в
секунду или вообще в произвольное время небольшой ответ по 1 или 2 строчки.

При переезде на стандартную связку Apache + Nginx всё перестало работать.
Причина - Nginx не отдаёт ответ, пока не заполнится буфер. Т.е. Apache может
выдать 1000 строк и клиент ничего не увидит в браузере и только на 1001
строке Nginx отправит клиенту заполненный буфер. Пока Nginx не накопит 32
килабойта ответа, клиент ничего не получит. Вот конфиг буферов:

client_header_buffer_size 4k;  
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 32k;

Остальные сайты, которые крутятся рядом с сервисом, стали работать заметно
хуже. Если конкретно, то была потеряна отзывчивость, сайты стали открываться
только через 0.2-0.5 секунд опять же таки видимо только после того, как
Nginx накопит буфер. Т.е. вместо супер быстрой обработки запросов Nginx
наоборот ухудшил всё что можно и видимо виноват в этом я.

Я озадачен, подскажите пожалуйста что делаю не так? В goole ответа не нашел,
хотя мне кажется такой вопрос уже должен был обсуждаться за столько лет.
Ткните носом если есть тема с решением. Как сделать, чтобы Nginx моментально
начинал отдавать ответ клиенту синхронно с Apache, а не тогда когда получит
буфер? 

Понятное дело, что буферы в Nginx созданы чтобы максимально быстро получить
ответ от Apache с PHP и освободить их, но как сделать чтобы буфер мгновенно
отдавался сразу клиенту начиная с первого полученного в буфер байта?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,255640,255640#msg-255640



Подробная информация о списке рассылки nginx-ru