如何解決吃掉記憶體的問題?
我試圖弄清楚為什麼在過去幾個小時內我的伺服器上的記憶體消耗開始不斷增加。我試圖在應用程序級別找到原因,但沒有成功。這就是為什麼現在調查可能的伺服器原因。我不是伺服器管理方面的專業人士,因此不勝感激。第一個普通記憶體被吃掉了,現在交換消耗也在不斷增加。
我的伺服器在 CentOS 7 上執行,核心為 3.10.0-514.26.2.el7.x86_64
解決方案
最後,確定該問題是由最近更新的伺服器庫引起的。接受的答案是一個很好的提醒,在您因記憶體使用而感到壓力的情況下,追溯問題出現之前系統中的更改。
我一直在尋找並發現非常有用的一些技巧在如何查找正在佔用所有記憶體的程序中進行了描述?
我在下面列出了我使用的命令,在這種情況下可能會有所幫助。
ps auwx –sort rss - 按記憶體使用排序的程序
ps -fu 使用者名- 由使用者處理
在我的案例中, htop使用/分析顯示了許多掛起的應用程序 cron 啟動的程序。我將 htop 配置為同時輸出 PID 和 PPID,因為我需要將PPID與**/var/log/cron**記錄的程序相關聯。
免費-m
total used free shared buff/cache available Mem: 7565 6525 440 47 599 657 Swap: 8191 2612 5579
貓 /proc/meminfo
MemTotal: 7747260 kB MemFree: 253960 kB MemAvailable: 498904 kB Buffers: 6160 kB Cached: 189076 kB SwapCached: 467788 kB Active: 5572588 kB Inactive: 1258540 kB Active(anon): 5498664 kB Inactive(anon): 1185908 kB Active(file): 73924 kB Inactive(file): 72632 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 8388604 kB SwapFree: 5686452 kB Dirty: 104 kB Writeback: 0 kB AnonPages: 6168400 kB Mapped: 68668 kB Shmem: 48676 kB Slab: 456672 kB SReclaimable: 389064 kB SUnreclaim: 67608 kB KernelStack: 7232 kB PageTables: 106848 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 12262232 kB Committed_AS: 10244216 kB VmallocTotal: 34359738367 kB VmallocUsed: 26276 kB VmallocChunk: 34359705340 kB HardwareCorrupted: 0 kB AnonHugePages: 5191680 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 83968 kB DirectMap2M: 8300544 kB
我如何才能繼續查找伺服器在記憶體使用方面的執行或配置是否存在任何問題?
通常,您需要隨著時間的推移收集資訊以查看記憶體洩漏的原因。
簡單的目標問題是:
最近對系統進行了哪些更改?
更新了什麼?
是否有任何資訊將這些更改與記憶體洩漏聯繫起來。
之後,您可以使用系統上可用的程序。我沒有 Cent 系統,但必須有一個系統監視器應用程序,它會顯示正在執行的程序正在使用多少記憶體。
可以在
top
命令行上用於相同的事情。在這兩種情況下,您都需要監控它們並辨識正在增長的內容。如果它是一個伺服器並且有類似 Nagios 的東西在監視它,你可以為不同的系統應用程序設置一個記憶體監視器,並讓它映射應用程序的記憶體使用情況。
這都是非常籠統的東西,但它確實給了你幾個方向。
標記