一個命令解決檢視程式在Linux上實際需要多少記憶體 -Percona
基於Linux系統上面臨的問題之一是管理記憶體預算。如果應用程式(JVM或資料庫程式)使用的記憶體多於可用記憶體,則可能會發生交換,這常常會對效能造成嚴重影響,或者啟用了記憶體不足(OOM)殺手,從而完全終止了程式。
top是檢視Linux當前負載的最常用程式之一。預設情況下,“ top”按CPU使用率對程式進行排序,因此我們將按“ Shift-M”將其按(虛擬記憶體VIRT)記憶體使用率進行排序。
由於各種原因,現代記憶體分配器和程式語言(即GoLang)可以分配很多他們實際上沒有使用的虛擬記憶體,因此虛擬記憶體的使用對於瞭解一個程式需要執行多少實際記憶體沒有什麼價值。
那麼常駐記憶體(RES)指標呢?它向我們顯示了該程式實際使用了多少實體記憶體。很好...但是有問題。記憶體可以是非常駐記憶體,這是因為它可以是沒有真正的“使用過”並且僅作為虛擬記憶體存在,或者是因為它已被交換出記憶體了。
使用下面一個命令可以完全瞭解記憶體佔用:
cat /proc/3767/status |
其中3767是程式pid,可以透過ps -ax 檢視記憶體中所有程式,找到你需要檢視記憶體的程式pid。
root@PMM2Server:~# cat /proc/3767/status Name: prometheus Umask: 0022 State: S (sleeping) Tgid: 3767 Ngid: 0 Pid: 3767 PPid: 3698 TracerPid: 0 Uid: 1000 1000 1000 1000 Gid: 1000 1000 1000 1000 FDSize: 256 Groups: 1000 NStgid: 3767 17 NSpid: 3767 17 NSpgid: 3767 17 NSsid: 3698 1 VmPeak: 3111416 kB VmSize: 3111416 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 608596 kB VmRSS: 291356 kB RssAnon: 287336 kB RssFile: 4020 kB RssShmem: 0 kB VmData: 1759440 kB VmStk: 132 kB VmExe: 26112 kB VmLib: 8 kB VmPTE: 3884 kB VmSwap: 743116 kB |
最後一行VmSwap是一個特別有趣的資料點,因為它顯示了該程式被從記憶體交換出的卻在繼續使用的記憶體量。如果它不是0,這裡為743116kB,說明記憶體不足或程式存在記憶體洩漏。
VmRSS + VmSwap可以更好地指示當前程式所需的“物理”記憶體
如果確認程式沒有存在記憶體洩漏,那麼增大實體記憶體到VmRSS+VmSwap大小,如果還存在Swap交換資料,說明肯定存在記憶體洩漏。
是否想檢視正在使用多少記憶體程式?不要檢視虛擬記憶體大小或常駐記憶體大小,而是檢視定義為常駐記憶體大小+交換使用情況的“已用”記憶體。
相關文章
- linux 檢視某個程序和服務記憶體佔用情況命令Linux記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- GDB檢視記憶體(x 命令)記憶體
- linux命令檢視記憶體命令free -h whereis locate find查詢命令Linux記憶體
- 用以檢查Linux記憶體使用的5個命令Linux記憶體
- 17 種檢視 Linux 實體記憶體的方法Linux記憶體
- 如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體Linux記憶體
- Linux檢視伺服器記憶體使用情況的命令Linux伺服器記憶體
- Linux下檢視CPU型號,記憶體大小,硬碟空間的命令Linux記憶體硬碟
- 在Linux中,如何檢視linux中記憶體使用率最高的程序?Linux記憶體
- Linux(CentOS) 檢視當前佔用CPU或記憶體最多的K個程式LinuxCentOS記憶體
- 如何檢視Linux的記憶體使用狀況Linux記憶體
- java程式碼實現檢視Tomcat記憶體使用情況JavaTomcat記憶體
- 檢視Linux硬體的一些命令Linux
- 小米9 SE記憶體是多少?小米9 SE手機記憶體的檢視方法步驟記憶體
- LINUX 檢視硬體配置命令Linux
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- 怎麼看記憶體條頻率是多少 電腦檢視記憶體頻率方法介紹記憶體
- Linux ps命令詳解,Linux檢視程序。Linux
- Linux/Centos檢視程式佔用記憶體大小的幾種方法總結LinuxCentOS記憶體
- 檢查 Linux 中記憶體使用情況的 8 條命令Linux記憶體
- Linux 檢視記憶體使用情況的幾種方法Linux記憶體
- 在Linux命令列檢視影像的方法Linux命令列
- 在 Linux 上以樹狀檢視檔案和程式Linux
- 每天一個Linux命令之ps-檢視系統程式資訊Linux
- Linux透過什麼命令可以檢視有多少個使用者登入?Linux
- linux 實時檢視一個 python 程式有幾個執行緒LinuxPython執行緒
- Linux實體記憶體管理Linux記憶體
- win10記憶體佔用過高但是實際沒有多少程式怎麼辦Win10記憶體
- AIX詳細檢視使用者/程式使用記憶體AI記憶體
- Python記憶體檢視是什麼Python記憶體
- 為什麼 Linux 需要虛擬記憶體Linux記憶體
- 每天一個Linux命令-使用du檢視檔案大小Linux
- Linux程式之如何檢視程式詳情?(ps命令)Linux
- Linux上執行記憶體中的指令碼和程式Linux記憶體指令碼
- Linux中常用來檢視程式的命令PSLinux
- [20190104]ipcs檢視共享記憶體段.txt記憶體
- java中如何檢視記憶體洩露Java記憶體洩露