本篇将介绍服务器内存使用率过高的处理方案。
内存方面主要关注两个问题,第一:物理内存够不够用;第二:有没有内存泄露。
内存使用率
在Linux系统中,free
、top
、vmstat
等命令都会有系统内存使用率的输出:
产生原因
- 进程占用 过多
- 运行时间太久
- 被植入异常木马
- 内存泄漏
排查步骤
- 查看内存占用率top10的进程:
ps aux| grep -v "USER" |sort -n -r -k 4 | awk '{print $11}' | head -n 10
- 或者使用top命令查看,
top -c
,然后按M。 - 如果进程都正常的话,可以考虑重启部分应用,如果有异常进程,考虑是否被植入木马,找到对应的进程脚本,kill掉即可。
- 如果cache太多,共享内存不足,可以在不重启机器的情况下释放缓存:
root@iZ2zeic9ggky8lb31din1gZ:~# sync
root@iZ2zeic9ggky8lb31din1gZ:~# echo 3> /proc/sys/vm/drop_caches
健康范围
我们在观察Linux的内存使用情况时,只要没发现用swap的交换空间,就不用担心自己的内存太少。如果常常看到swap用了很多,那么你就要考虑加物理内存了。这也是在Linux服务器上看内存是否够用的标准。