最近有多台dmz服务器访问互联网服务接口出现每两小时自动丢失链接,报502的问题,有没有人遇到过同样的情况,求解答,出口通过nginx出去,短链接,网络正常,出现这种问题后重新加载nginx甚至简单curl或ping下对应的地址即可恢复,但是两小时后又会重新出现报错
你有没有试过找个在服务器上一直ping着测试看看过两个小时还会不会中断
收起访问互联网配置的是域名吧?原因估计与下面这个问题一样,参考下面链接。
https://mp.weixin.qq.com/s/IuXWgr-KBbPphrvMXY2lkA
解决办法是在nginx里增加域名定期解析,重启NGINX或者ping能解决是因为触发了域名重新解析,固定两个小时失效估计是防火墙缓存域名对应的IP地址时间是两小时。
收起nginx不太懂,但是从2小时想到了Linux的一组参数,默认如下:
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
解释:
tcp_keepalive_time=7200:2小时内如果没有任何连接活动,启用keepalive机制
tcp_keepalive_intvl = 75:每75秒检测一次
tcp_keepalive_probes = 9:如果连续检测9次都没活动连接,则中断此连接
系统发现死亡连接的时间:tcp_keepalive_time+(tcp_keepalive_intvl*tcp_keepalive_probes)
按默认来算:7200+(75*9)=7875s=2小时11分11秒 系统2小时11分11秒才能发现死亡连接
所以,可以尝试下把这3个值该小,看看有没有效果,比如下面 大概15分钟发现死亡连接
net.ipv4.tcp_keepalive_time = 700
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 20
供参考
收起