加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

这些 Nginx 负载均衡配置误区

发布时间:2021-04-18 14:13:54 所属栏目:外闻 来源:互联网
导读:,即在 fail_timeout 时间内,1次请求失败即不再尝试,将请求根据 hash 规则,转发到下一个上游服务 fail_timeout 有两种含义: 当已经确认上游服务不可用时,是指与上游服务器通信失败次数的时间 服务器不可用的时间段 默认是10s 文字不是很好理解,搭建个

,即在 fail_timeout 时间内,1次请求失败即不再尝试,将请求根据 hash 规则,转发到下一个上游服务

fail_timeout 有两种含义:

  • 当已经确认上游服务不可用时,是指与上游服务器通信失败次数的时间
  • 服务器不可用的时间段

默认是10s

文字不是很好理解,搭建个实验环境,环境如下:

  • Nginx
  • PHP-FPM(x2)

nginx 通过 fast-cgi 将 php 请求转发到 PHP-FPM,这里 PHP-FPM 服务即上游服务,设置 upstream,负载 PHP-FPM以看到,关掉 PHP-FPM1 后,发起的请求,本来第二次请求(17:49:58)应该分发到 PHP-FPM1 的,然后从 Nginx 错误日志可以看到,连接 PHP-FPM1 失败,这里只做了一次失败尝试,然后 Nginx 将请求转发到 PHP-FPM2 处理了。

接着将 max_fails 设置为2,继续上面的请求续分发到 PHP-FPM2,接着看 Nginx 错误日志

可以看到,过了 fail_timeout 的时间后,Ngxin 会再次将请求发往 FPM-PHP1 进行尝试,尝试2次失败后,在 fail_timeout 时间内,不会再将请求分发,

这里有几个误区:

  • Nginx 记录了连接上游失败,这个请求就返回错误请求,或这个请求丢失没处理

这个理解是错误的,Nginx 只是记录了失败的请求到日志,并将这个请求又转发到了可用的其他上游服务,知道所有上游都不可用时,才会返回错误状态

  • max_fails 是指连续请求失败的次数

max_fails 是在 fail_timeout 指定的时间内的失败次数,请求还是按照配置的负载均衡算法来走,并不是第一次请求失败之后,继续将这个请求在尝试一次,达到失败次数之后,标记为不可用

  • fail_timeout 越短越好

当访问量大的时候,fail_timeout 设置太短,会导致不断的尝试与不可用上游的连接,耗费大量的 tcp 资源进行连接

  • fail_timeout 越长越好

当访问量大的时候,fail_timeout设置太长,会导致负载不均衡,有可能会击穿某个上游后端,达不到负载的效果。

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读