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