Tomcat
1 前言
一个问题,一篇文章,一出故事。
笔者今天遇到Tomcat服务提示“java.lang.OutOfMemoryError”错误,公司开发希望结合Heap Dump排除故障,因此整理当前章节。
2 最佳实践
2.1 设置Tomcat环境
2.2 配置内存溢出
2.2.1 定义环境变量
vim /usr/lib/systemd/system/tomcat.service
加入如下配置,
[Service] #... Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tomcat/heapdump.hprof" #...
配置修改后,你需要重载服务使配置生效,
systemctl daemon-reload
2.2.2 重启服务使配置生效
systemctl restart tomcat.service
然后,建议你检查你的服务是否正常启动,
systemctl status tomcat.service
2.2.3 确认配置生效
pgrep -u tomcat java -a | grep 'HeapDumpPath'
可见如下配置,
3420503 /usr/java/jdk-15.0.2/bin/java -Djava.util.logging.config.file=/usr/tomcat/apache-tomcat-8.5.81/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tomcat/heapdump.hprof -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Xms4096M -Xmx8192M -Xss512k -server -XX:+UseParallelGC -Dignore.endorsed.dirs= -classpath /usr/tomcat/apache-tomcat-8.5.81/bin/bootstrap.jar:/usr/tomcat/apache-tomcat-8.5.81/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcat/apache-tomcat-8.5.81 -Dcatalina.home=/usr/tomcat/apache-tomcat-8.5.81 -Djava.io.tmpdir=/usr/tomcat/apache-tomcat-8.5.81/temp org.apache.catalina.startup.Bootstrap start
参阅文档
======================
https://comate.baidu.com/zh/page/q3ejea2iu69
没有评论