Plainnotes

nginx 到上游的 keepalive,配了反而更慢

2026-01-21 · 3 分钟部署

给 upstream 加了 keepalive 32,QPS 没涨,超时反而多了。原因通常是漏了另外两处配置。

完整的三件套:

upstream app {
    server 127.0.0.1:8080;
    keepalive 32;
}
server {
    location / {
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_pass http://app;
    }
}

只写 keepalive 而用 HTTP/1.0 回源,连接根本不会复用;不把 Connection 头清空,nginx 会把客户端的 close 透传给上游,每次都是新连接。

另一个坑是上游的 keepalive_timeout 比 nginx 的短,nginx 拿到的是已被对端关闭的连接,请求直接失败。让上游的超时略长于 nginx,或者开启 proxy_next_upstream 重试。