自从迁移到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"]
添加回答
举报
0/150
提交
取消