[alibaba/tengine]ngx_http_upstream_check_module的tcp探测导致半打开连接过多

2024-07-12 367 views
6

我们在测试的时候使用了ngx_http_upstream_check_module模块的tcp探测,tengine服务器的半打开连接数增加到2万多,导致这个原因我个人觉得是因为每一个tcp探测包都是新打开一个tcp连接,导致tcp的连接过多无法及时释放。 能不能实现tcp探测包的keepalive功能使每一个探测包都不新建tcp连接而是重复利用被打开的tcp连接。

回答

1

keepalive并不能完全表示TCP服务可用。
请详细描述下环境,是开启tcp健康检查的tengine机器的syn_sent多?还是被检测的rs的syn_recv多?
理论上,健康检查间隔较长,必然比正常业务请求少,rs不可能出现syn_recv多,是因为rs多导致tengine所在服务器syn_sent多?

4

tengine服务器上的TIME_WAIT有两万多。 被探测的服务器没有看。 如果使用http探测在使用了http1.1并且开启了http的keepalive的情况下就几个tcp连接。

2

打开tcp timeout 快速回收和 tcp timeout 复用。正如 @MengqiWu 所述。 因为在启用keepalive的时候,tcp三次握手只发生一次,所以只有几个tcp链接。而非keepalive的环境是没个请求都会进行三次握手。