[英]Host running out of memory, JVM with stable usage
當前,我們面臨一個問題,那就是我們的主機內存不足。 這些主機上僅運行一個應用程序。
我們首先懷疑JVM會導致問題,然后檢查了實際的內存使用情況。 JVM運行良好,我們幾乎100%確認沒有內存泄漏(顯示可用內存和已用內存的mem圖看起來確實不錯,當GC啟動時很明顯,avg mem的使用率在很長一段時間內保持穩定)。
盡管如此,主機本身上的免費mem會緩慢但穩定地減少,而不會指示正在消耗什么進程,主機上運行的其他每個服務和守護程序都有穩定的mem使用率。
我們仍然假設應用程序中的某些原因導致了這種情況,但是由於JVM看起來不錯,而且我們對可能的內存泄漏的審查並未顯示任何漏洞,因此我們現在有點卡住了...
有任何想法嗎?
非常感謝您提供的任何提示!
隨着時間的推移,內存被使用的最常見原因是文件緩存中保存着越來越多的文件。 這不是問題,因為它是讀取緩存,操作系統可以隨時輕松刪除內存。
例如
$ head -5 /proc/meminfo
MemTotal: 131751016 kB
MemFree: 109487136 kB
MemAvailable: 124110416 kB
Buffers: 78400 kB
Cached: 14764024 kB
這台機器有足夠的可用內存。 但是,如果我訪問大量數據。
$ find /opt -print | xargs wc -l
$ head -5 /proc/meminfo
MemTotal: 131751016 kB
MemFree: 105404804 kB
MemAvailable: 124107668 kB
Buffers: 78400 kB
Cached: 18824784 kB
現在,由於文件被緩存,可用內存減少了4 GB。
它們緩存了多長時間? 直到
簡而言之,JVM可能正在訪問文件並將其拉到緩存中,但這並不意味着有問題。
順便說一句,服務器的通宵備份通常會填滿文件緩存,但這是正常的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.