Nginx 负载均衡配置中 max_fails 和 fail_timeout 参数怎么设

文章导读
高 QPS 场景下推荐配置为 fail_timeout=10s max_fails=20,而官方示例配置的 max_fails=3 fail_timeout=30s 在万级 QPS 场景会导致服务出现毛刺。
📋 目录
  1. A 原因分析
  2. B 解决方案
  3. C 注意事项
  4. D 参考来源
A A

Nginx 负载均衡配置中 max_fails 和 fail_timeout 参数怎么设

核心结论:高 QPS 场景下推荐配置为 fail_timeout=10s max_fails=20,而官方示例配置的 max_fails=3 fail_timeout=30s 在万级 QPS 场景会导致服务出现毛刺。

原因分析

Nginx 的 upstream 模块实现的是被动健康检查机制,通过 max_fails 和 fail_timeout 两个参数协同工作。根据 2024 年 8 月 20 日的实战经验文章,fails 是一个区间内失败的累加值,在 fail_timeout 的时间区间内,即使两个错误之间有成功的请求,fails 也会继续累加计算。具体机制如下:在 T0 时刻出现错误时 fails=1;在 T0~T0+fail_timeout 区间内若无新错误则 fails 重置为 0,若出现新错误则 fails 继续累加;当 fails≥max_fails 时,peer 节点会被摘除,在摘除期间无法对外提供服务。

默认值方面,根据 2024 年 8 月 12 日的负载均衡小专题文章,max_fails 默认值为 1,fail_timeout 默认值为 10 秒。这意味着如果不配置,服务器在 10 秒内失败 1 次就会被标记为不可用 10 秒。

解决方案

低流量场景配置

对于低流量场景,可采用官方示例配置。2026 年 1 月 3 日的资料显示标准配置如下:

upstream backend {    server 192.168.1.10:80 max_fails=3 fail_timeout=30s;    server 192.168.1.11:80 max_fails=3 fail_timeout=30s;}

该配置表示 30 秒内最多失败 3 次才判定服务器不可用,标记为宕机后 30 秒内不再转发请求。

Nginx 负载均衡配置中 max_fails 和 fail_timeout 参数怎么设

高 QPS 场景配置

针对万级 QPS 以上的高流量场景,2024 年 8 月 20 日的实战经验文章指出官方示例配置会导致服务出现毛刺,因为高 QPS 场景下偶尔出现几个异常错误是常见的。经过线上实践,推荐配置为:

upstream backend {    server 192.168.1.10:80 max_fails=20 fail_timeout=10s;    server 192.168.1.11:80 max_fails=20 fail_timeout=10s;}

如果 QPS 进一步增加或后端节点数减少,max_fails 可以适当进一步调高。

配置文件位置

根据 2026 年 1 月 3 日的资料,Nginx 主配置文件通常位于/etc/nginx/nginx.conf,或在/etc/nginx/conf.d/下创建新配置文件如 load-balancer.conf。配置完成后需执行 nginx -t 验证配置,然后 nginx -s reload 重载。

注意事项

根据 2026 年 4 月 14 日发布的生产实践配置文章,需避免以下常见配置陷阱:

1. 不要设 max_fails=0:这等价于关闭失败计数,节点永远不下线,故障会持续影响流量。

Nginx 负载均衡配置中 max_fails 和 fail_timeout 参数怎么设

2. 不要设 max_fails≥10 且 fail_timeout 过长:比如 max_fails=15 fail_timeout=60s,意味着节点可能在 1 分钟内累计失败 15 次才下线,此时大量请求已失败,失去保护意义。

3. backup 节点不是兜底:backup 节点仅在所有非 backup 节点不可用时才启用,不应将其作为主要故障转移方案。

4. 线上实际问题:有团队采用 max_fails=3 fail_timeout=30s 配置,在高 QPS 场景下出现服务毛刺,后调整为 fail_timeout=10s max_fails=20 解决。

5. 安装依赖问题:2023 年 5 月 26 日的安装指南提到,启动 Nginx 时可能碰到错误:./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory,需确保 pcre 库正确安装。

Nginx 负载均衡配置中 max_fails 和 fail_timeout 参数怎么设

参考来源

来源:技术博客 - 实战讲解 Nginx upstream 中 max_fails 与 fail_timeout 的最佳生产实践配置(2026 年 4 月 14 日发布)

来源:CSDN - Nginx 负载均衡故障转移 (手把手教你搭建高可用 Web 服务)(2026 年 1 月 3 日)

来源:技术社区 - Nginx 实战系列之四:upstream 的 max_fails 和 fail_timeout 指标和实战经验(2024 年 8 月 20 日收录)

来源:技术博客 - Nginx:负载均衡小专题 (三)(2024 年 8 月 12 日撰写)