TOMCAT运行时OOM解决

来源:互联网 发布:美国公务员 知乎 编辑:程序博客网 时间:2024/06/07 03:05

统计分析系统因为内部系统,访问量不是太高,一直都是完成功能,没有对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 两个参数可以更好的支持并发;




0 0
原创粉丝点击