【发布时间】:2019-02-27 02:09:38
【问题描述】:
我们目前面临一个问题,即我们的主机内存不足。 这些主机上只运行一个应用程序。
我们首先怀疑是 JVM 引起了问题,并检查了实际的 mem 使用情况。 JVM 运行良好,我们几乎 100% 确定没有内存泄漏(显示可用内存和已用内存的内存图看起来非常好,很明显,当 GC 启动时,平均内存使用量在很长一段时间内都很稳定)。
尽管如此,主机本身的空闲内存缓慢但稳定地减少,而没有表明是什么进程在咀嚼它,主机上运行的每个其他服务和守护进程都有稳定的内存使用)。
我们仍然假设我们的应用程序中的某些东西会导致这种情况,但由于 JVM 看起来不错,而且我们对可能的内存泄漏的审查没有显示任何漏洞,我们现在有点卡住了......
有什么想法吗?
非常感谢您提供的任何提示!
【问题讨论】:
-
首先,检查
ps aux --sort -rss以验证占用最多物理内存的是否是Java 进程。有many reasons 为什么Java 可能消耗比-Xmx更多的值。检查NativeMemoryTracking 功能和本机内存分析器,例如jemalloc 和async-profiler(-e malloc模式)。 -
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Server Fault 或Unix & Linux Stack Exchange 会是一个更好的提问地点。