keepalive_requests控制单个长连接最多处理的请求数,默认100,与keepalive_timeout共同决定连接生命周期,任一条件满足即断连,实际存活时间取二者最小值。

在 Nginx 中,keepalive_requests 用于控制一个长连接(keep-alive connection)在其生命周期内最多能处理多少个 HTTP 请求。它不是限制总连接数,而是限制单个 TCP 连接上可复用的请求数上限。
作用与触发机制
当客户端开启 HTTP/1.1 持久连接(默认行为),并发送带有 Connection: keep-alive 的请求时,Nginx 可复用该 TCP 连接处理后续请求。但为防止连接长期占用资源或因累积状态异常导致问题,Nginx 用 keepalive_requests 设定“复用次数上限”。达到该值后,Nginx 会在响应头中添加 Connection: close,主动关闭该连接。
配置位置与语法
该指令只能出现在 http、server 或 location 块中,语法为:
keepalive_requests number;
例如:
http {
keepalive_requests 100;
server {
listen 80;
location /api/ {
keepalive_requests 50; # 此 location 下降为 50
}
}
}- 数值为整数,默认值是 100
- 配置在
http块中为全局默认值;在server或location中可覆盖上级配置 - 设为 0 表示不限制(不推荐,可能引发连接堆积)
配合 keepalive_timeout 使用
keepalive_requests 需与 keepalive_timeout 协同生效:
-
keepalive_timeout 60s:连接空闲超过 60 秒即关闭 -
keepalive_requests 100:即使未超时,处理满 100 个请求也关闭 - 二者任一条件满足,连接即终止——取“先到先关”原则
例如:某连接在 10 秒内快速完成 100 次请求,第 100 次响应后立即断开;另一连接只发了 2 次请求,但空闲了 65 秒,也会被超时关闭。
实际调优建议
默认 100 通常够用,但在高并发 API 场景下可适当调高(如 1000),以减少 TCP 握手开销;若发现后端服务有连接泄漏或内存缓慢增长,可调低(如 50)辅助定位问题。
- 观察 Nginx 状态页或日志中的
connection和request关系,确认是否频繁断连 - 结合
netstat -an | grep :80 | grep ESTABLISHED | wc -l查看活跃连接数变化趋势 - 避免盲目设为极大值,尤其在容器或资源受限环境


















