【问题标题】:Host running out of memory, JVM with stable usage主机内存不足,JVM使用稳定
【发布时间】:2019-02-27 02:09:38
【问题描述】:

我们目前面临一个问题,即我们的主机内存不足。 这些主机上只运行一个应用程序。

我们首先怀疑是 JVM 引起了问题,并检查了实际的 mem 使用情况。 JVM 运行良好,我们几乎 100% 确定没有内存泄漏(显示可用内存和已用内存的内存图看起来非常好,很明显,当 GC 启动时,平均内存使用量在很长一段时间内都很稳定)。

尽管如此,主机本身的空闲内存缓慢但稳定地减少,而没有表明是什么进程在咀嚼它,主机上运行的每个其他服务和守护进程都有稳定的内存使用)。

我们仍然假设我们的应用程序中的某些东西会导致这种情况,但由于 JVM 看起来不错,而且我们对可能的内存泄漏的审查没有显示任何漏洞,我们现在有点卡住了......

有什么想法吗?

非常感谢您提供的任何提示!

【问题讨论】:

标签: linux memory jvm


【解决方案1】:

随着时间的推移,内存被使用的最常见原因是文件缓存保存了越来越多的文件被访问。这不是问题,因为它是一个读取缓存,操作系统可以随时轻松删除内存。

例如

$ 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 可以访问文件并将它们拉入缓存,但这并不意味着这是一个问题。

顺便说一句,服务器的夜间备份通常会填满文件缓存,但这是正常的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多