我有一个负载均衡器服务器的网络(使用 nginx)磅1在四个 Web 服务器之间路由流量web1,web2,web3,web4. 这四个 Web 服务器在 nginx 中采用循环路由方式进行路由。
所有服务器都设置为最大失败次数=1和失败超时=5秒,因此当服务器宕机时,如果它不在线,就应该很快被忽略。
我应该指出,如果所有四台 Web 服务器都在线,则每台 Web 服务器的网页平均响应时间约为 50-150 毫秒。当只有一台 Web 服务器离线时,就会出现问题。当一台服务器离线并且用户尝试加载另一个页面时,响应时间从 50 毫秒到 25 秒不等。是的,25秒。
我很困惑,因为我认为循环和fail_timeout设置会使离线服务器被忽略。
额外的、可能相关的说明:所有四个 Web 服务器都运行带有 php5 的 apache,并且四个服务器之间都启用了 memcached。
答案1
似乎您误解了该fail_timeout
参数。请重新阅读文档。
在指定的时间内,与服务器通信的尝试失败次数达到指定次数,则认为服务器不可用;
该参数不限制每次尝试的时间,而是关于在指定时间内应发生多少次尝试才能将服务器视为关闭并停止向其发送请求。
您应该调整和proxy_connect_timeout
指令,以及proxy_send_timeout
proxy_read_timeout
增加价值fail_timeout
。