阅读nginx文档,proxy_buffer
命令有解释性消息:
该指令设置缓冲区的数量和大小 将读取从代理服务器获得的答案。默认情况下, 一个缓冲区的大小等于页面的大小。取决于 平台,这是4K或8K。
默认值为8个4k或8k缓冲区。为什么nginx
的作者选择八个而不是更高的数字呢?如果我添加更多缓冲区或更大的缓冲区大小会出现什么问题?
答案 0 :(得分: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;
这些配置是通过一些试验和错误以及通过增加来自网络的nginx配置指南的值来确定的。标头缓冲区仍然很小,因为HTTP标头往往是轻量级的。客户端和fastcgi缓冲区已经增加,以处理复杂的HTML页面和XML API。