技术分享 服务器.NET带的程序内存泄露导致死机 [复制链接]

zhoubao
网站编辑
技术中心 20278 0 2017-9-29 17:58:13
问题现象:多家网吧出现服务器卡死的问题,频率不定
问题解决:卸载掉.net库,删除.net安装目录下的conhost.exe程序
问题排查:以下是排查过程,和客户一起排查的成果。
一开始,根据系统日志排查,发现服务器经常报虚拟内存不足,查看服务器虚拟内存设置,都是2048-4096, 于是将虚拟内存调大至10G观察,然后依然会出问题。
鉴于系统日志提示虚拟内存不足,所以判断是内存泄露导致的,但是没有明确的证据,直到看到了现场。
4.png
出问题的网吧挨个远程检查,终于看到了现场,一眼看去,内存泄露得很严重了,同时可以看到句柄数72万了,这个就太不正常了。
转到进程那里,查看进程的句柄,这里看到程序占用的内存都是正常的,但是conhost.exe占用的句柄70万了,明显是异常的进程。打开所在路径,发现是在.NET库的安装目录下面,并且日期也比较新,2017/09/06。确认没有手动去更新过.NET库,那基本肯定要么是微软推送的升级,要么服务器被黑了(可能性很小)。
1.png 2.png
顺着这个线索,又看了几家网吧,果然也发现了有同样的问题,至此基本确认就是就是这个玩意儿内存泄露导致的问题,把.NET库卸载,然后程序目录都删掉,重启服务器后就没出过问题了。
5.jpg
后记:说到这个句柄泄露的问题,之前也处理过一个服务器CPU使用率异常的,是联盟哥哥的进程句柄泄露导致的,奇怪的是联盟哥哥自己的进程占CPU不高,反而是其他进程占CPU高,大家在排查服务器上的故障时,可以多注意下进程的内存、句柄、线程这些信息是否正常。


您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 29064 个
  • 话题数: 9634 篇
  • 巅峰数: 5500 人