[alibaba/tengine]nginx_http_upstream_check_module针对http做健康检测的bug

2024-02-21 346 views
1

压测的时候发现一个问题,如下: tengine代理后端应用的AB两个节点,在模拟B节点僵死的情况下,请求会全部分发至正常的A节点没问题,但是当僵死的B节点恢复的一瞬间至配置的interval周期的那段时间,节点A不会接受任何流量请求,资源消耗出现低估,所有的流量请求全都转发至B节点,等过了这个周期后,A节点才会正常处理请求。

回答

3

@singAllSong 请提供Tengine的版本以及问题最小复现配置信息,如果有debug日志的话最好也提供一下。

7

我测试健康检查也发现类似问题,我upstream server配置了2台机器,fail_timeout 为3分钟,fail_nums默认为1,其中一台出现read timeout时,nginx 自动把超时的这个server标记为down不可用状态,但是过了一个heatcheck interval 后,我配置的是3秒,这个健康检查肯定是成功的,但是这个被标记为down 的server并没有流量过来,只有过了3分钟流量才恢复。

1

@gavenpeng 后端检查一般配置后端服务器的http响应状态或者配置一个简单的查询接口看响应吧。我觉得应该配置一个较小的时间,确保健康检查的灵活及时,超时时间配置3分钟是不是会严重的降低健康检查的灵活性

7

我测试也发现这个问题了,这个后面是怎么解决的。而且我发现每次心跳都有报错日志输出recv() failed (104: Connection reset by peer)