proxy_busy_buffers_size是proxy_buffers总量中划出的“已接收、待发送”数据上限,需设为总量的1/4至1/2且不低于单块大小;过小致后端阻塞,过大削弱并发接收能力,必须配合proxy_buffering on生效。

proxy_busy_buffers_size 不是单独分配的内存,而是从 proxy_buffers 总量中划出的“正在发送但尚未发完”那部分缓冲区的上限。它直接影响大响应载荷下 Nginx 网关能否持续收、稳定发,避免后端被卡住或自身缓冲区逻辑紊乱。
明确它的作用边界
这个值只管“已接收、待发送”的数据最多占多大空间,不管响应头(那是 proxy_buffer_size 的事),也不管落盘行为(那是 proxy_max_temp_file_size 的职责)。
- 设得太小(如沿用默认 8k),Nginx 很快判定“忙区满了”,主动暂停从后端读取——后端 TCP 窗口可能因此收缩,甚至触发超时断连
- 设得太大(比如超过
proxy_buffers总量的一半),空闲缓冲区变少,反而削弱并发接收能力,尤其在多连接并行响应时容易争抢 - 它必须和
proxy_buffering on配合才生效;若关闭缓冲(off),该参数完全不参与逻辑
按 proxy_buffers 总量比例设定
先确认 proxy_buffering on 已启用,再根据你配置的 proxy_buffers 计算合理范围:
⚠️ 已弃用 — 该技能已拆分为两个独立技能,以提升模块化程度:**webchat-https-proxy**(HTTPS/WSS 反向代理)和 **webchat-voi...**
- 若用
proxy_buffers 8 128k(总量 1MB),proxy_busy_buffers_size建议设为 128k–256k - 若用
proxy_buffers 16 256k(总量 4MB),可设为 1m–2m - 通用原则:取
proxy_buffers总量的 1/4 至 1/2,且不低于单块大小(例如单块 128k,就不能设成 64k)
匹配业务响应特征微调
不是所有“大响应”都适合同一套配置:
- 中小响应为主(如 SSR 页面 HTML ≤100KB):用
proxy_buffers 8 128k; proxy_busy_buffers_size 128k即可平衡内存与吞吐 - 持续流式响应(如日志 tail、SSE):直接
proxy_buffering off,此时该参数无效,也无需调整 - 后端响应头较大(含长 Cookie 或多个自定义 Header):可同步把
proxy_buffer_size提到 16k,但proxy_busy_buffers_size仍按 body 缓冲逻辑设置,不必跟着加
验证是否真正起效
改完配置 reload 后,不能只看服务是否启动,要观察两个关键信号:
- 用
curl -I请求,检查响应头是否含X-Accel-Buffering: no(说明 buffering 已关)或有明确Content-Length(说明未被 chunked 截断) - 配合
nginx -t和错误日志,确认无upstream prematurely closed connection类报错——这类错误常源于 busy 缓冲区过小导致 Nginx 被迫中断接收

















