一個命令解決檢視程式在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記憶體
- GDB檢視記憶體(x 命令)記憶體
- linux 檢視某個程序和服務記憶體佔用情況命令Linux記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- 檢視linux可用記憶體Linux記憶體
- Linux檢視記憶體資訊Linux記憶體
- adbshelldumpsys命令檢視記憶體記憶體
- Aix下檢視記憶體命令 -- 轉AI記憶體
- 17 種檢視 Linux 實體記憶體的方法Linux記憶體
- linux命令檢視記憶體命令free -h whereis locate find查詢命令Linux記憶體
- 如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體Linux記憶體
- 用以檢查Linux記憶體使用的5個命令Linux記憶體
- 一個jboss在一臺xeon2.0,2g記憶體上可以支援多少併發??記憶體
- linux下檢視最消耗CPU、記憶體的程式Linux記憶體
- Linux檢視佔用記憶體的程式指令碼Linux記憶體指令碼
- Linux檢視伺服器記憶體使用情況的命令Linux伺服器記憶體
- linux檢視cpu、記憶體、版本資訊Linux記憶體
- Linux下檢視記憶體,CPU資訊Linux記憶體
- linux aix檢視CPU和記憶體LinuxAI記憶體
- linux top命令檢視記憶體及多核CPU的使用講述Linux記憶體
- 檢視swap記憶體記憶體
- 檢視程式cpu和記憶體佔用率記憶體
- linux下檢視CPU、記憶體、硬碟方法Linux記憶體硬碟
- linux下檢視記憶體使用情況Linux記憶體
- 小米9 SE記憶體是多少?小米9 SE手機記憶體的檢視方法步驟記憶體
- Linux(CentOS) 檢視當前佔用CPU或記憶體最多的K個程式LinuxCentOS記憶體
- linux c程式記憶體檢查器LinuxC程式記憶體
- Linux下應用程式到底使用了多少記憶體 ?Linux記憶體
- 怎麼看記憶體條頻率是多少 電腦檢視記憶體頻率方法介紹記憶體
- 如何檢視Linux的記憶體使用狀況Linux記憶體
- Linux檢視CPU和記憶體使用情況Linux記憶體
- linux系統檢視記憶體使用率Linux記憶體
- 在Linux中,如何檢視linux中記憶體使用率最高的程序?Linux記憶體
- 很經典的GDB除錯命令,包括檢視變數,檢視記憶體除錯變數記憶體
- Linux(CentOS) 如何檢視當前佔用CPU或記憶體最多的K個程式LinuxCentOS記憶體
- free命令顯示的記憶體與實際不符記憶體
- 檢測Linux記憶體使用情況的free命令的10個例子Linux記憶體
- java程式碼實現檢視Tomcat記憶體使用情況JavaTomcat記憶體