Centos

如何解決吃掉記憶體的問題?

  • April 29, 2019

我試圖弄清楚為什麼在過去幾個小時內我的伺服器上的記憶體消耗開始不斷增加。我試圖在應用程序級別找到原因,但沒有成功。這就是為什麼現在調查可能的伺服器原因。我不是伺服器管理方面的專業人士,因此不勝感激。第一個普通記憶體被吃掉了,現在交換消耗也在不斷增加。

我的伺服器在 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

我如何才能繼續查找伺服器在記憶體使用方面的執行或配置是否存在任何問題?

通常,您需要隨著時間的推移收集資訊以查看記憶體洩漏的原因。

簡單的目標問題是:

  1. 最近對系統進行了哪些更改?

  2. 更新了什麼?

  3. 是否有任何資訊將這些更改與記憶體洩漏聯繫起來。

之後,您可以使用系統上可用的程序。我沒有 Cent 系統,但必須有一個系統監視器應用程序,它會顯示正在執行的程序正在使用多少記憶體。

可以在top命令行上用於相同的事情。在這兩種情況下,您都需要監控它們並辨識正在增長的內容。

如果它是一個伺服器並且有類似 Nagios 的東西在監視它,你可以為不同的系統應用程序設置一個記憶體監視器,並讓它映射應用程序的記憶體使用情況。

這都是非常籠統的東西,但它確實給了你幾個方向。

標記

引用自:https://unix.stackexchange.com/questions/379407