tengine ngx_http_upstream_check_module的tcp探测导致半打开连接过多

kxe2p93d  于 3个月前  发布在  其他
关注(0)|答案(5)|浏览(59)

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

wwwo4jvm

wwwo4jvm1#

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

7ajki6be

7ajki6be2#

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

huwehgph

huwehgph3#

Good advice,it will be support future。You can try to change kernel parameters for the time being
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_timeout = 3

zazmityj

zazmityj4#

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

相关问题