簡體   English   中英

主機內存不足,JVM穩定使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM