有多少nginx缓冲区太多了?

Kev*_*rke 6 proxy buffer nginx

阅读nginx文档,该proxy_buffer命令有以下解释性消息:

该指令设置缓冲区的数量和大小,从代理服务器获取答案.默认情况下,一个缓冲区的大小等于页面大小.根据平台,这是4K或8K.

默认值为8个4k或8k缓冲区.作者为什么nginx选择八个而不是更高的数字呢?如果我添加更多缓冲区或更大的缓冲区大小会出现什么问题?

par*_*amr 8

nginx的内存效率很高,其默认配置对内存使用也很轻松.如果你添加更多的缓冲区,没有什么会出错,但nginx将消耗更多的RAM.

可能选择8个缓冲区作为最小有效计数,即2的平方.四个太少了,16个大于nginx的默认需求.

"太多缓冲区"的答案取决于您的性能需求,内存可用性和请求并发性.保持不变的"好"阈值是服务器必须将内存交换到磁盘的时间点."最佳"答案是:尽可能少的缓冲区以确保nginx永远不会写入磁盘(检查错误日志以确定是否存在).

以下是我用于具有32 GB RAM的Web主机上的大型PHP-FPM应用程序的nginx配置:

 client_body_buffer_size      2m;
 client_header_buffer_size    16k;
 large_client_header_buffers  8 8k;
 fastcgi_buffers              512 16k;
 fastcgi_buffer_size          512k;
 fastcgi_busy_buffers_size    512k;
Run Code Online (Sandbox Code Playgroud)

这些配置是通过一些试验和错误以及通过增加来自网络的nginx配置指南的值来确定的.标头缓冲区仍然很小,因为HTTP标头往往是轻量级的.客户端和fastcgi缓冲区已经增加,以处理复杂的HTML页面和XML API.

  • 你会如何配置`proxy_buffers`? (3认同)