开发者社区> 问答> 正文

nginx+tomcat集群,停止其中一个tomcat,请求有时候非常慢? 400 报错

nginx+tomcat集群,停止其中一个tomcat,请求有时候非常慢? 400 报错

现在配置了两个tomcat ,nginx配置权重一样,当停止其中一个tomcat后就出现很慢的情况,等几分钟才能加载完成,感觉是一直在请求停止的那个tomcat,有没有配置使tomcat其中一个停止后,马上请求另一个tomcat呢?谢谢!

展开
收起
爱吃鱼的程序员 2020-06-03 15:09:17 716 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    修改完ngnix配置后,reload了吗?

    ######

    nginx的健康检查机制是被动的

    当流量分发给了失败的节点后,默认会重试一次,然后标记节点为失败,再然后将流量重新分发给健康的节点.10秒后重复上述操作.

    这样会导致流量频繁分发给失败节点,然后重新分发,中间间隔10秒,也就是"抽风" .

    改善的办法是提高重试间隔,比如300秒,也就是5分钟抽风一次,情况得到些许缓解.

    upstream xxx {
      ...
      server 1.2.3.4:8080 max_fails=1 fail_timeout=300;
      ...
    }

    根本解决办法是采用主动健康检查机制,这需要nginx收费版,或第三方插件,

    也可以使用tengine这类nginx衍生版.

    望采纳!

    ######

    引用来自“purple_grape”的评论

    nginx的健康检查机制是被动的

    当流量分发给了失败的节点后,默认会重试一次,然后标记节点为失败,再然后将流量重新分发给健康的节点.10秒后重复上述操作.

    这样会导致流量频繁分发给失败节点,然后重新分发,中间间隔10秒,也就是"抽风" .

    改善的办法是提高重试间隔,比如300秒,也就是5分钟抽风一次,情况得到些许缓解.

    upstream xxx {
      ...
      server 1.2.3.4:8080 max_fails=1 fail_timeout=300;
      ...
    }

    根本解决办法是采用主动健康检查机制,这需要nginx收费版,或第三方插件,

    也可以使用tengine这类nginx衍生版.

    望采纳!

    嗯,谢谢

    2020-06-03 16:45:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《Nginx 代理系统常用手册》 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载