关于Linux下进程无故挂掉问题的分析

问题背景
设备项目上线,设备支持SNMP协议,提供tcpserver二次开发接口,支持动环系统平台的对接;设备安装数据中心机房,运行一天后查看动环平台,发现设备运行数据缺失。

  • 问题排查
    1、打开cmd命令窗口,进行telnet远程登录设备,进入命令行界面;
    2、执行ps命令,发现tcpserver进程已经挂掉;
    3、断电重启设备,执行ps命令,观察到tcpserver进程已启动;
    4、经过半天时间后,动环系统再次无法检测到设备运行数据;
    5、分析问题:设备运行一段时间后,进程无缘无故挂掉;分析可能是资源不足的问题;
    6、在设备命令行界面执行top命令,查看内存使用情况,测试分析现象;
    在这里插入图片描述
    7、查看分析,随着设备运行,可使用的内存空间不断减少,内存不断在消耗;
    8、查看代码分析,是否是动态内存malloc之后没有free,导致内存越来越大;
    9、代码查看结束,其中每次malloc之后都进行free,两函数成对出现;
    10、再次分析原因,动环检测平台上设备的运行数据是从共享内存中读取,查看共享内存是否存在问题;
    11、查看代码,发现每次对共享内存shmget初始化进行shmat操作后,没有对共享内存shmdt;
    12、修改代码,每次shmget后调用shmdt,使程序与共享内存脱离;
    13、覆盖最新程序,重启设备,再次在命令行界面执行top检测内存使用情况;
    14、发现可用内存基本保持稳定;

  • 问题解决结论
    程序编写时,对共享内存函数的调用缺乏严谨性;对内存方面的函数调用时谨记打开关闭成对出现;

最后推荐一个公众号,一枚IT技术人成长路上关于生活和职场的思考,欢迎书友们前来交流和分享心得

在这里插入图片描述

福利~ 福利~ 福利~ 1块钱一次帮下优快云资料

添加微信,备注下载资料~所需下载优快云资料链接可通过微信发送。
在这里插入图片描述在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值