5
我们在测试的时候使用了ngx_http_upstream_check_module模块的tcp探测,tengine服务器的半打开连接数增加到2万多,导致这个原因我个人觉得是因为每一个tcp探测包都是新打开一个tcp连接,导致tcp的连接过多无法及时释放。 能不能实现tcp探测包的keepalive功能使每一个探测包都不新建tcp连接而是重复利用被打开的tcp连接。
我们在测试的时候使用了ngx_http_upstream_check_module模块的tcp探测,tengine服务器的半打开连接数增加到2万多,导致这个原因我个人觉得是因为每一个tcp探测包都是新打开一个tcp连接,导致tcp的连接过多无法及时释放。 能不能实现tcp探测包的keepalive功能使每一个探测包都不新建tcp连接而是重复利用被打开的tcp连接。
keepalive并不能完全表示TCP服务可用。
请详细描述下环境,是开启tcp健康检查的tengine机器的syn_sent多?还是被检测的rs的syn_recv多?
理论上,健康检查间隔较长,必然比正常业务请求少,rs不可能出现syn_recv多,是因为rs多导致tengine所在服务器syn_sent多?
tengine服务器上的TIME_WAIT有两万多。 被探测的服务器没有看。 如果使用http探测在使用了http1.1并且开启了http的keepalive的情况下就几个tcp连接。
打开tcp timeout 快速回收和 tcp timeout 复用。正如 @MengqiWu 所述。 因为在启用keepalive的时候,tcp三次握手只发生一次,所以只有几个tcp链接。而非keepalive的环境是没个请求都会进行三次握手。
@hjun881 https://blog.csdn.net/u012566181/article/details/49968283 可以参考这个帖子