gpt4 book ai didi

由于内存中断,Tomcat 被 docker 容器杀死

转载 作者:行者123 更新时间:2023-11-28 23:19:34 24 4
gpt4 key购买 nike

我最近在用tomcat开发一个休息服务。我设置 JAVA_OPTS = -Xmx1648m -Xmn1648 -server 并确保它们已经生效。 docker 正在运行,内存限制设置为 4g。

观察到tomcat进程的内存占用一直在增长,最终达到4g。然后,内存成本在几分钟到几小时之间随机停留在 99% ~ 100% 之间。然后,tomcat进程崩溃,没有任何错误,如jvm heap oom。

当docker stats观察到的内存消耗在3.5g左右时,我使用jmap dump了heap。转储文件大小低于 400m。使用 mat 分析转储文件显示大部分内存部分实际上可以被垃圾收集。我还手动运行 jcmd pid GC.run,这大大减少了内存使用量(从 2g 到 1.4g)。

我检查是tomcat从来没有达到jvm设置的限制,否则,应该有关于jvm heap oom的错误日志。然后,内存应该被jvm或tomcat内部的其他线程消耗。但是我找不到解决这个问题的方法。请帮忙!

最佳答案

当 Xmx 设置为 1648 即 1.4G 时,JVM 将不会使用更多。如果存在内存分配问题,则可能导致 OOM。当您说“内存成本保持在 99% ~ 100% 之间”时,您是指 RAM 内存吗?在那种情况下,您的 RAM 大小是多少?你的任务负荷是多少?您是否经常进行 I/O 操作?

关于由于内存中断,Tomcat 被 docker 容器杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45489216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com