Nginx Load Balancer缓冲

时间:2015-11-24 12:33:55

标签: nginx

根据{{​​3}}(2013年11月),

Nginx支持代理响应缓冲

  

proxy_buffering 指令禁用响应缓冲,而不是请求   缓冲。

     

截至目前,无法阻止nginx中的请求正文缓冲。   在将请求传递给nginx之前,它总是被nginx完全读取   上游服务器。它基本上是nginx作为网络的一部分   加速器 - 它自己处理与客户的慢速通信   只要求后端在一切准备就绪时处理请求。

自版本1.7.11 Nginx(2015年3月)指令 proxy_request_buffering the mailing list

  

更新:在nginx 1.7.11中, proxy_request_buffering 指令是   可用,允许禁用请求主体的缓冲。它   但应谨慎使用,请参阅文档。

有关详细信息,请参阅see details

  

语法:proxy_request_buffering on |关闭;

     

默认值:proxy_request_buffering on;

     

上下文:http,服务器,位置

     

启用缓冲后,将从中读取整个请求正文   客户端在将请求发送到代理服务器之前。

     

禁用缓冲时,请求正文被发送到代理   服务器立即收到。在这种情况下,请求不能   如果nginx已经开始发送,则传递给下一个服务器   请求正文。

     

使用HTTP / 1.1分块传输编码发送原始文件时   请求正文,请求正文将被缓冲,无论如何   指令值,除非为代理启用了HTTP / 1.1。

问题是关于Nginx(Load Balancer)的缓冲。例如,我们有以下方案:

Nginx (LB) -> Nginx (APP) -> Backend

Nginx(APP)缓冲来自负载均衡器的请求,并缓冲来自后端的响应。但是如果两个Nginx节点在物理上彼此靠近(小于2毫秒ping)并且中间网络连接相当快,那么在Nginx(LB)端缓冲请求和响应是否有意义?

我测量了以下基准 - 请注意,这只是为了说明 - 生产负荷会显着增加:

siege --concurrent = 50 --reps = 50 docs

proxy_request_buffering on;

Transactions:          2500 hits
Availability:        100.00 %
Elapsed time:          58.57 secs
Data transferred:      577.31 MB
Response time:            0.55 secs
Transaction rate:        42.68 trans/sec
Throughput:          9.86 MB/sec
Concurrency:          23.47
Successful transactions:        2500
Failed transactions:            0
Longest transaction:          2.12
Shortest transaction:        0.10

proxy_request_buffering off;

Transactions:          2500 hits
Availability:        100.00 %
Elapsed time:          57.80 secs
Data transferred:      577.31 MB
Response time:            0.53 secs
Transaction rate:        43.25 trans/sec
Throughput:          9.99 MB/sec
Concurrency:          22.75
Successful transactions:        2500
Failed transactions:            0
Longest transaction:          2.01
Shortest transaction:        0.09

0 个答案:

没有答案