一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

怎么在 Nginx 中调整负载均衡器连接数的均衡策略

时间:2026-06-20 09:55:03 编辑:袖梨 来源:一聚教程网

least_conn是Nginx唯一原生支持的连接数感知负载均衡策略,将新请求发给当前活跃连接数最少的后端,适用于长连接、响应时间差异大或后端性能异构场景;需配合keepalive、max_conns和健康检查使用。

Nginx 默认用轮询(round robin)分发请求,但它本身不直接按连接数做实时均衡,而是通过 least_conn 策略实现“最少活跃连接数”调度——这才是你真正需要的连接数均衡策略。


启用 least_conn 策略

这是 Nginx 内置的、唯一原生支持连接数感知的负载均衡算法。它会把新请求发给当前 活跃连接数最少 的后端服务器,特别适合长连接、耗时接口或 WebSocket 场景。

配置很简单,只需在 upstream 块中添加 least_conn;

upstream backend {    least_conn;    server 192.168.1.10:8080;    server 192.168.1.11:8080;    server 192.168.1.12:8080;}

注意:least_conn 不能和 ip_hashhash 同时使用,二者互斥。


配合连接限制与健康检查更可靠

仅靠 least_conn 还不够,建议搭配以下参数防止单节点被压垮:

  • max_conns:限制每台后端的最大并发连接数(需开启 proxy_http_version 1.1keepalive
    示例:server 192.168.1.10:8080 max_conns=200;

  • max_fails / fail_timeout:自动剔除异常节点
    示例:server 192.168.1.10:8080 max_fails=3 fail_timeout=30s;

  • keepalive:复用 upstream 连接,降低开销
    在 upstream 外加:

    upstream backend {    least_conn;    keepalive 32;  # 保持 32 个空闲连接    server 192.168.1.10:8080;    ...}

    并在 location 中启用:

    proxy_http_version 1.1;proxy_set_header Connection '';

为什么不用“连接数监控+动态权重”?

有人想用脚本统计各后端连接数再动态改 weight,但 Nginx 不支持运行时热更新权重(reload 配置会中断连接)。而且连接数只是负载维度之一,响应时间、CPU、队列深度等更关键——这类高级调度需借助外部服务(如 Consul + Envoy)或商业版 Nginx Plus 的 least_time 或主动健康检查。

开源版 Nginx 就老实用 least_conn + 合理限流 + 被动健康检查,稳且够用。


不复杂但容易忽略

热门栏目