当前位置: 首页 > Linux

记得最近一个zabbix监控JMX故障

时间:2023-04-06 19:10:17 Linux

最近无意中发现其中一个在线服务的zabbix图形出不来,点开报错:java.rmi.ConnectIOException:errorduringJRMPconnection设立;nestedexception是:java.net.SocketException:Connectionreset最初怀疑是端口被占用,后来查看端口,发现端口没有被占用。重新启动它,但图形仍然没有出来。然后我看了一下系统上的一些限制,并没有超过限制,因为之前已经调整过了。netstat看了一下端口,都是TIME_WAIT,问题应该出在这里。调整内核参数/etc/sysctl.conf#tcpconnectionkeeptimeis1800secondsnet.ipv4.tcp_keepalive_time=1800#回收TIME_WAIT占用的连接net.ipv4.tcp_tw_recycle=1sysctl-p我以为这样就解决了,然而,a几行文字出现在我的眼前。启用处于TIME-WAIT状态的套接字的快速回收。不建议启用此选项。在NAT(NetworkAddressTranslation)网络下,会造成大量的TCP连接建立错误。如果没有技术高手的指导,就不要换他。最合适的方案是增加四倍的数量,比如服务器的可用端口,或者服务器IP,这样服务器就可以容纳足够多的TIME-WAIT状态的连接。服务器端不要启用net.ipv4.tcp_tw_recycle,除非你能保证你的服务器网络环境不是NAT。在服务器上启用net.ipv4.tw_reuse对传入的TCP连接没有影响。在客户端(尤其是服务端,当一个服务作为客户端运行时,比如上面提到的nginx响应生成,FPM连接redis,mysql等)启用net.ipv4.tcp_tw_reuse,这是一个稍微安全一点的方案时间的等待。如果开启了net.ipv4.tcp_tw_recycle,客户端(或者以客户端的形式)的回收是没有用的,反而会发生很多奇怪的事情(尤其是在FPM这样的服务器上,相比nginx,就是服务端,相对redis是客户端)。看来,出现问题的时候,一定要综合考虑,否则就会埋下隐患。参考文档https://www.cnblogs.com/xupei...https://blog.csdn.net/chengm8...