【问题标题】:How many nginx buffers is too many?多少 nginx 缓冲区太多了?
【发布时间】:2013-05-13 16:52:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: nginx proxy buffer


    【解决方案1】:

    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。

    【讨论】:

    • 如何配置proxy_buffers
    猜你喜欢
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2011-02-01
    • 2011-08-31
    • 1970-01-01
    • 2019-08-16
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多