统计分析系统因为内部系统,访问量不是太高,一直都是完成功能,没有对TOMCAT的配置关注过,直到最近发生了如下的报错:
Exception in thread "http-bio-8080-Acceptor-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: Java heap space
决定抽点时间,把TOMCAT的配置调整一下。
1、${TOMCAT_HOME}/bin/catalina.sh
找到 “# Copy CATALINA_BASE from CATALINA_HOME if not already set” 在下面添加如下
JAVA_OPTS=-Xms1024m -Xmx4096m -XX:PermSize=128m -XX:MaxPermSize=256m
参数说明:
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmn:最小值
-Xmx:java heap最大值,使用的最大内存
上面三个值是分配JVM的初始大小,最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同堆内存分配 (访问量比较大时设为一致)
-Xss:线程内存的大小,jdk5.0以后可以不用设置;设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K;
-XX:PermSize:设定初始的内存的永久保存区域, 指定类空间(用于加载类)的内存大小
-XX:MaxPermSize:设定最大内存的永久保存区域
2、${TOMCAT_HOME}/conf/server.xml
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="300" minSpareThreads="200" />
<Connector executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1"
connectionTimeout="20000" enableLookups="false"
redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000" />
加大maxThreads、acceptCount 两个参数可以更好的支持并发;
TOMCAT运行时OOM解决
最新推荐文章于 2025-06-26 06:17:40 发布