最近有多台dmz服务器访问互联网服务接口出现每两小时自动丢失链接,报502的问题,有没有人遇到过同样的情况,求解答,出口通过nginx出去,短链接,网络正常,出现这种问题后重新加载nginx甚至简单curl或ping下对应的地址即可恢复,但是两小时后又会重新出现报错
收起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
供参考