內存是為提高效率而生,實際分析問題的時候,內存出現問題可能不只是影響性能,而是影響服務或者引起其他問題。
一、宿主機層面:
查看內存使用:
[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
