Linux系统中内存问题排查思路与解决方法

内存是为提高效率而生,实际分析问题的时候,内存出现问题可能不只是影响性能,而是影响服务或者引起其他问题。

一、宿主机层面:

查看内存使用

[root@sh-dev-backup-4-2 ~]# free -h
\              total        used        free      shared  buff/cache   available
Mem:            62G        2.4G        354M        208M         59G         59G
Swap:          8.0G          0B        8.0G

详解:

1、total:总的物理内存

2、used:系统使用的内存,包括buff+cache。并非系统真正使用的内存。系统真正使用的内存=used-buff/cache

3、free:空闲的内存,系统未使用的内存,并不是系统启动应用程序可以真正使用的内存。

4、shared:共享内存

5、buff/cache:磁盘缓存的大小

6、available:在旧版free中,没有这个选项。这个选项指的是,系统启动程序时可以利用的内存,当这个选项很小或者不够启动程序所需的内存,会提示系统内存不足,无法启动,此时就需要处理问题,是物理内存真的不足,还是清理系统缓存。

Cached主要负责缓存文件使用, 日志文件过大,索引太多(redis,es,log处理等)造成cached区内存增大把内存占用完 ,Linux服务器会自动释放内存,保障系统运行,但只会释放够用的内存,而不会去释放更多的内存。

查看当前节点占用内存高的前3个进程:

ps aux |awk '{if($4>0.1){{printf "PID: "$2" Memory: "$3"% --> "}for(i=11;i<=NF;i++)if(i==NF)printf $i"\n";else printf $i}}' |sort -k4 -nr |head -3
posted @ 2020-10-31 13:41  朝明  阅读(1715)  评论(0编辑  收藏  举报