TOMCAT运行时OOM解决

本文针对Tomcat出现的内存溢出错误,介绍了如何通过调整JVM参数及修改连接器配置来提高系统的稳定性和并发处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值