多less个nginx缓冲区太多了?

阅读nginx文档, proxy_buffer命令有这个解释性的消息:

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

缺省是8个4k或8k缓冲区。 为什么nginx的作者select八个,而不是更高的数字? 如果我添加更多的缓冲区或更大的缓冲区大小,会出现什么问题?

nginx的内存使用效率很高,而且默认的配置对内存的使用也很少。 如果添加更多的缓冲区,没有什么会出错的,但是nginx会消耗更多的RAM。

可能选择了八个缓冲区作为最小的有效计数,它是两个平方的平方。 四个会太少,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; 

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