nginx高并发优化之缓冲配置

时间:2022-11-18 10:14:41

一、配置

http {
proxy_buffer_size 256k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 128m;
proxy_temp_path /usr/local/nginx/proxy_temp
}

二、说明

缓冲就是nginx代理缓冲从后端服务器返回的数据,供传递给客户端。缓冲完成后nginx代理和后端服务器就可以断开连接了。解决了由于客
户端性能慢而导致与后端服务器长时间连接问题,释放后台进程。

1、proxy_buffering
该指令控制缓冲是否启用。默认情况下,它的值是“on”。

2、proxy_buffers
该指令控制代理响应缓冲区的数量(第一个参数)和大小(第二个参数)。默认配置是8个缓冲区大小等于一个内存页(4K或者8K)。增加缓
冲区的数目可以让你缓冲更多信息。

3、proxy_buffer_size
从后端服务器的响应头缓冲区大小,它包含headers,和其他部分响应是分开的。该指令设置响应部分的缓冲区大小。默认情况下,它和proxy_buffers
是相同的尺寸,但因为这是用于头信息,这通常可以设置为一个较低的值。

4、proxy_busy_buffers_size
此指令设置标注“client-ready”缓冲区的最大尺寸。而客户端可以一次读取来自一个缓冲区的数据,缓冲被放置在队列中,批量发送到客户端
。此指令控制允许是在这种状态下的缓冲空间的大小。

5、proxy_max_temp_file_size
这是每个请求能用磁盘上临时文件最大大小。这些当上游响应太大不能装配到缓冲区时被创建。

6、proxy_temp_file_write_size
这是当被代理服务器的响应过大时Nginx一次性写入临时文件的数据量。

7、proxy_temp_path
当上游服务器的响应过大不能存储到配置的缓冲区域时,Nginx存储临时文件硬盘路径。
正如你所看到的,Nginx提供了相当多的不同的指令来调整缓冲行为。大多数时候,你不必担心太多,但它对于调整一些值可能是有用的。
可能最有用的调整是proxy_buffers和proxy_buffer_size指令。

buffer工作原理
1.所有的proxy buffer参数都是作用到每一个请求的。每一个全球有会按照参数的配置获得自己的buffer。proxy buffer不是global
(全局配置),而是per request(在请求前执行的操作(如时间戳、签名))的
2、proxy_buffering是为了开启response buffering of the proxied server(反向代理服务器响应数据的缓存),开启后
proxy_buffers和proxy_busy_buffers_size参数才会起作用
3、无论peoxy_buffer是否开启,proxy_buffer_size都是工作的,proxy_buffer_size所设置的buffer_size的作用是用来存储
upstream端response的header。
4、在proxy_buffering 开启的情况下,Nginx将会尽可能的读取所有的upstream端传输的数据到buffer,直到proxy_buffers设置的所有
buffer们被写满或者数据被读取完(EOF)。此时nginx开始向客户端传输数据,会同时传输这一整串buffer们。同时如果response的内容很
大的话,Nginx会接收并把他们写入到temp_file里去。大小由proxy_max_temp_file_size控制。如果busy的buffer传输完了会从
temp_file里面接着读数据,直到传输完毕。
5、一旦proxy_buffers设置的buffer被写入,直到buffer里面的数据被完整的传输完(传输到客户端),这个buffer将会一直处在busy状态
,我们不能对这个buffer进行任何别的操作。所有处在busy状态的buffer size加起来不能超过proxy_busy_buffers_size,所以
proxy_busy_buffers_size是用来控制同时传输到客户端的buffer数量的。