zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    cocos2d-x笔记5: 通过jni实现C++调用Java
    cocos2d-x笔记4: TextField不能删除内容,以及我的解决办法。。。
    C++ 11 笔记 (六) : 随机数
    C++ 11 笔记 (五) : std::thread
    C++ 11 笔记 (四) : std::bind
    C++ 11 笔记 (三) : auto
    C++ 11 笔记 (二) : for循环
    要做的题目
    【C补充】结构体的内存分配,匈牙利命名法
    【C补充】文件操作
  • 原文地址:https://www.cnblogs.com/shenjianyu/p/6514788.html
Copyright © 2011-2022 走看看