suse系统 net-tools导致的问题

起因 : 公司测试人员发现交易端账号登陆不上,管理端账号一直显示连接中(这个问题最近一周偶尔发现过)

查看对应日志并没有什么报错,经过排查发现ts这边的日志显示没有连接上broker,对应账号平台端口没有监听

现象:

netstat 加上-p选项后,有部分端口没有显示占用该端口的pid和进程名,而以“-”代替。如图。

 

 

分析原因:

这台服务器已经开机一百多天了  ts通过pid连接broker 

 监听过程中 端口就不知不觉没有了账号就一直登录中了

由于每天8点和20点两次重启脚本会杀死服务然后创建新的服务进程,Linux分配的进程连接的socket id会逐渐增大。当服务器运行较长的一段时间,期间没有进行断电重启时,这个socket id将会超过 INT_MAX (即2^31)。而netstat的源代码中对socket id大于INT_MAX的进程不予处理。

问题处理:

 应急处理:reboot下机器  使socket id重新刷新

永久方法:

使用git上作者提供的patch,对源码进行重新编译打包。已提供rpm包:net-tools-1.60.20120726git-rzrk_1.x86_64.rpm

升级方式:

执行:rpm -Uvh net-tools-1.60.20120726git-rzrk_1.x86_64.rpm

升级后的效果如下图。

 

 

【附加说明】

这个rpm包可以放在soft包中,和其他rpm包同一个目录,在部署系统时随其他rpm包一起安装。

单机模式和主备机模式部署时作为可选项,自行决定是否升级。

分布式模式部署时必须升级net-tools,因为系统监控页面中的进程端口就是通过netstat命令获取的。上述的bug将导致分布式系统监控某些XT服务时显示端口为0

 

posted @ 2017-03-20 11:38  沈剑宇  阅读(354)  评论(0编辑  收藏  举报