从服务端分析,以下情况会导致服务地址链接访问超时:
服务地址被安全防护
如流量黑洞和清洗,WAF防护(WAF的特点是建连后向客户端和服务器集群双向发送RST报文)。
客户端端口不足
尤其容易发生在压测的时候,客户端端口不足会导致建立连接失败,负载均衡默认会抹除TCP连接的timestamp属性,Linux协议栈的tw_reuse(time_wait状态连接复用)无法生效,time_wait状态连接堆积导致客户端端口不足。
解决方法:客户端端使用长连接代替短连接。使用RST报文断开连接(socket设置SO_LINGER属性) ,而不是发FIN包这种方式断开。
后端服务器accept队列满
后端服务器accept队列满,导致后端服务器不回复syn_ack报文,客户端超时。
解决方法:默认的net.core.somaxconn的值为128,执行sysctl -w net.core.somaxconn=1024更改它的值,并重启后端服务器上的应用。
从四层负载均衡后端服务器访问该四层负载均衡的服务地址
四层负载均衡,在该负载均衡的后端服务器上去访问该负载均衡的服务地址会导致连接失败,常见的场景是后端应用使用URL拼接的方式跳转访问。
对连接超时的RST处理不当
负载均衡上建立TCP连接后,如果900s未活动,则会向客户端和服务器双向发送RST断开连接,有的应用对RST异常处理不当,可能会对已关闭的连接再次发送数据导致应用超时。
欢迎尊敬的题主来到阿里云云栖社区,希望我私人的回答能对你有帮助,你可以继续留言或者到论坛参与更多的互动。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。