为了账号安全,请及时绑定邮箱和手机立即绑定

如何防止Spring Boot / Tomcat(Java8)进程被OOM杀死?

如何防止Spring Boot / Tomcat(Java8)进程被OOM杀死?

倚天杖 2021-05-10 17:29:26
自从迁移到Tomcat8 / Java8以来,Tomcat服务器有时会被OOM杀死。OOM = Linux内核杀死内存不足。如何防止Tomcat服务器被OOM杀死?这可能是内存泄漏的结果吗?我想我会收到一条正常的内存不足消息,但是没有OOM杀伤力。正确的?我应该更改HEAP大小的设置吗?我应该更改MetaSpace大小的设置吗?知道哪个Tomcat进程被杀死了,如何检索信息以便重新配置Tomcat服务器?
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

另一个非常好的解决方案是将您的应用程序转换为Spring Boot JAR(Docker)应用程序。通常,此应用程序的内存消耗要少得多。

因此,请进行以下步骤以获得巨大的改进(如果可以迁移到Spring Boot应用程序):

  • 迁移到Spring Boot应用程序。就我而言,这仅需执行3个简单的操作。

  • 使用重量较轻的基本图像。见下文。

  • 非常重要-使用Java内存平衡选项。请参阅下面的Dockerfile的最后一行。这将我正在运行的容器RAM使用量从650MB以上减少到240MB。运行平稳。所以,SAVING超过400MB 650MB上!

这是我的Dockerfile:

FROM openjdk:8-jdk-alpine

ENV JAVA_APP_JAR your.jar

ENV AB_OFF true

EXPOSE 8080

ADD target/$JAVA_APP_JAR /deployments/

CMD ["java","-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-jar","/deployments/your.jar"]



查看完整回答
反对 回复 2021-05-26
  • 2 回答
  • 0 关注
  • 250 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信