4

nginx高并发优化之缓冲配置

 1 year ago
source link: https://blog.51cto.com/u_13236892/5867730
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

nginx高并发优化之缓冲配置

精选 原创

哭泣的馒头 2022-11-18 09:41:36 博主文章分类:nginx指南 ©著作权

文章标签 nginx 客户端 数据 文章分类 Linux 系统/运维 yyds干货盘点 阅读数399



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数量的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK