Re: Не отдаёт ответ пока буфер не наполнится
Валентин Бартенев
vbart at nginx.com
Tue Dec 23 16:34:18 UTC 2014
On Thursday 18 December 2014 13:54:53 sofiamay wrote:
[..]
> Вы немножко меня не правильно поняли :-) Я предполагал что Nginx умеет
> одновременно и получать и отдавать свой буфер. Т.е. получил первый байт в
> буфер и тут же начинает передавать ответ клиенту при этом продолжая получать
> данные в буфер. Это как бы совместный доступ к буферу, один поток наполняет,
> а второй одновременно считывает и передаёт клиенту.
[..]
Неблокирующиеся чтение и запись данных из/в сокет - это по сути операции
копирования в памяти, очень быстрые. Делать это одновременно в разных
потоках будет только дороже. Так что вся ваша идея, по крайней мере в
такой формулировке, лишена смысла и nginx уже работает эффективно в этом
месте.
Значение off в proxy_buffering, как это и изложено в документации, все
равно подразумевает наличие буфера, размер которого регулируется директивой
proxy_buffer_size. Если он достаточно велик, чтобы вместить в себя весь
ответ, то по возможности он будет получен полностью и это ни чем существенно
по эффективности не будет отличаться от режима "on".
Ваша проблема видимо в том, что бекенд не отдает весь ответ сразу,
а делает это постепенно маленькими порциями, так что непонятно, как
вы намереваетесь его освободить. Такому бекенду уже ничем не поможешь
и режима работы proxy_buffering off для него будет вполне достаточно.
--
Валентин Бартенев
Подробная информация о списке рассылки nginx-ru