一、故障说明
早上到公司客户反馈网站访问不了了,登录服务器查看redis进程被杀死了,内存使用97%。

二、故障排查
服务器是windows sever系统,服务器内存是8G的,通过任务管理器查看内存使用情况,发现使用内存加起来才2G多,但是占用率达到了97%,那说明肯定有什么服务或者程序一直在占用内存,最开始怀疑项目存在内存泄漏,但通过任务管理看到项目所占用的内存才几百兆。所以还是通过工具来定位故障。

三、故障定位

使用的是RamMap工具发现PageTable占了3.5G多,对于PageTable 自己也不是了解,百度查看说是因为windows任务计划程序,长时间定时执行任务,可能会引起内存中page table占用越来越大且不能释放,看字面意思是因为什么定时任务导致但实际到底是什么导致还是不清楚。

redis内存不足 redis内存飙升原因_内存泄漏

在点击Processes看看具体有些什么进程。再上一张 RAMMap 中进程标签页下的截图。

redis内存不足 redis内存飙升原因_redis内存不足_02


PID已高达一百八十多万了,很多都是SafeDogGuardHe(安全狗)这样的进程。安全狗在这里就不多说了,这边联系安全狗官方对方提出升级版本。果然升级后版本内存就正常了。

总结:内存飙升分很多情况,大家结合不同的场景分析问题。