如何查看linux服務器內存使用情況


 1. free命令

free 命令顯示系統使用和空閑的內存情況,包括物理內存、交互區內存(swap)和內核緩沖區內存。
直接輸入free命令,顯示如下
 
free命令默認是顯示單位kb,可以采用free -m和free -g命令查看,分別表示MB和GB
另外,free -h會自動選擇以適合理解的容量單位顯示
 
Mem:表示物理內存統計,如果機器剩余內存非常小,一般小於總內存的20%,則判斷為系統物理內存不夠
Swap: 表示硬盤上交換分區的使用情況,如剩余空間較小,需要留意當前系統內存使用情況及負載,當Swap的used值大於0時,則表示操作系統物理內存不夠,已經開始使用硬盤內存了。
第1行數據11G表示物理內存總量;
6.5G表示總計分配給緩存(包含buffers與cache)使用的數量,但其中可能部分緩存並未實際使用; 1.3G表示未被分配的內存;
shared表示共享內存;
4.0G表示系統分配但未被使用的buffers數量;
4.7G表示系統分配但未被使用的available數量


今天被叫着看一個性能問題,發現了一個很有意思的事情,當Linux的物理內存快被耗盡時,系統會把一些進程占用的內存轉移swap區,當物理內存被釋放一部分時,swap區的一些內存占用又慢慢回到mem區,但是mem區卻不再是之前的滿負荷狀態,而是有一部分free的內存!

 
           

【17G大小進程壓力測試結果】


【總結】

1.當物理內存快被耗盡時,系統並沒有崩潰,而是拿swap做臨時內存,當兩者都耗盡,系統OutofMemory
2.物理內存到達峰值,系統中可能一些不常用的進程內存占用被踢到swap區
3.當Mem區的資源進行釋放時,被挪到swap的內存並不會全部回來的,隨着系統或者程序的喚醒才會慢慢回到mem區
4.Swap是內存不夠時磁盤虛擬出來的內存,磁盤主要是I/O級別的操作並不是系統內核級別的操作,處理速度跟Mem區不是一個等級
---------------------

2.哪些應用程序占的內存比較多

ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less

執行以上命令可查看各個程序進程內存使用的內存情況,如下圖所示,第一列為進程占用的內存百分比,可以看到哪些應用程序占的內存比較多,用於排查問題:

2.top命令排查內存

top 命令查看系統的實時負載, 包括進程、CPU負載、內存使用等等;
直接輸入top命令
 
 
下面表示整體信息

列表的含義
 

 

進入top的實時界面后,默認按照CPU的使用率排序,通過“shift+m”按鍵將進程按照內存使用情況排序,可以查看哪些進程是當前系統中的內存開銷“大戶”。
top命令中,按下 f 鍵,進入選擇排序列的界面,這里可以選擇要顯示的信息列,要按照哪些信息列進行排序等
參照紅框的說明來選擇是否顯示那些列就行,標*的就是顯示

 

 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM