关闭

Tomcat的JVM内存溢出解决方法

5287人阅读 评论(0) 收藏 举报
分类:
Tomcat的JVM内存溢出解决方法
在生产环境中,tomcat内存设置不好很容易出现JVM内存溢,解决方法就是修改Tomcat中的catalina.sh文件。


在catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下
# vi TOMCAT_HOME/bin/catalina.sh
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"


其他说明:
1.“m”说明单位是MB,否则默认是KB
2.一般使用物理内存的80%作为堆大小
3.一般把-Xms和-Xmx设为一样大
4.一般把-Xmn设置为-Xmx值的1/4
5.一般将堆的总大小的50%到60%分配给新生成的池

 

Tomcat 7最大并发连接数的正确修改方法


所以两者的默认值分别是200和100,要调整Tomcat的默认最大连接数,可以增加这两个属性的值,并且使acceptCount大于等于maxThreads:


    <Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" acceptCount="500" maxThreads="400" />
 


查看tomcat的内存大小
conf/tomcat-user.xml 
<?xmlversion='1.0'encoding='utf-8'?> 
<tomcat-users> 
<rolerolename="manager"/> 
<userusername="tomcat"password="s3cret"roles="manager"/> 
</tomcat-users>


登录后即可看到TOMCAT当前的空闲内存和最大内存。
 

Tomcat把JDBC驱动强行注销的有关问题
异常:A web application registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped.


tomcat 6.0.25以后引入了内存泄露侦测,对于垃圾回收不能处理的对像,它就会做日志。老外提出的办法是要么用旧版本的tomcat,要么就在tomcat的server.xml文件中,把
<!– Prevent memory leaks due to use of particular java/javax APIs–>
<Listener className=”org.apache.catalina.core.JreMemoryLeakPreventionListener”/>;


这个监听给关了。


我试了把这个监听关了,就不会再报上面那个信息,但是这样子运行tomcat会不会有其他的问题,我就不得而知了。

  

tomcat无故停止解决
============================
2015-6-9 17:11:45 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
严重: The web application [/XXTServer] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
2015-6-9 17:11:45 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/XXTServer] appears to have started a thread named [commons-pool-EvictionTimer] but has failed to stop it. This is very likely to create a memory leak.
2015-6-9 17:11:45 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/XXTServer] appears to have started a thread named [net.sf.ehcache.CacheManager@4391f0] but has failed to stop it. This is very likely to create a memory leak.
2015-6-9 17:11:45 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/XXTServer] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak.
2015-6-9 17:11:45 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/XXTServer] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.


  


tomcat常常运行一段时间后自动停止,也不闪退,就卡在那儿……启动时正常;关闭的时候显示没有响应,强行结束进程后日志中报错。 


网上好多人说这是数据库连接没有释放,得从程序上改。我纳闷的是为什么本地开发的时候从来没有这样的问题,独独发布到服务器上就成这样了?!


后来抱着死马当活马医的心态修改了tomcat的内存设置,它好了…… 






Xms256m是最小内存,-Xmx512m是最大内存,其中的256与512可根据你自己的内存做相应调整,PermSize/MaxPermSize最小/最大堆大小.一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设大一点,不过要视自己机器内存大小来设置,我自己的文件如下:


1)linux下
#!/bin/sh
JAVA_OPTS='-server -Xms1024m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=2048m'
# -----------------------------


2)windows下
编辑tomcat的catalina.bat文件,在第一行的后面增加一句:
set JAVA_OPTS=-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M

注意:没有单引号



================================================
原文:http://blog.csdn.net/cyjch/article/details/51543329
作者:超越
超越的主页:http://blog.csdn.net/cyjch
================================================

0
0
查看评论

Exception in thread “commons-pool-EvictionTimer”

Exception in thread “commons-pool-EvictionTimer” 刚遇到这个问题,以为是maven运行时内存不足,于是修改maven的运行时内存大小为-Xms512m -Xmx512m -XX:PermSize=512m -XX:MaxPermSize=512m ...
  • u010685007
  • u010685007
  • 2016-07-11 11:13
  • 6114

pool(四)——EvictionTimer

1.BaseGenericObjectPool的startEvictor /** * Starts the evictor with the given delay. If there is an evictor * running when this method is cal...
  • xxcupid
  • xxcupid
  • 2016-07-18 17:56
  • 841

启动项目报错this web application instance has been stopped already.

1.tomcat底下catalina.out日志报如下错误 25-Jul-2016 18:06:41.568 INFO [commons-pool-EvictionTimer] org.apache.catalina.loader.WebappClassLoaderBase.checkStateF...
  • Howie_zhw
  • Howie_zhw
  • 2016-07-27 14:16
  • 6617

7 :Tomcat中JVM内存溢出及合理配置

待续
  • xiaoliuliu2050
  • xiaoliuliu2050
  • 2016-11-03 17:56
  • 1308

Tomcat中JVM内存溢出及合理配置

Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。 一、Java JVM内存介绍 JVM管理两种类型的内存,堆和非堆。按照官方的说法:...
  • ye1992
  • ye1992
  • 2013-07-16 16:58
  • 134385

java spring 定时器 Exception in thread "Timer-1"

今项目中要自动更新会员级别,用到定时器,顺便整理了下 感谢下边俩位兄弟的分享 http://www.blogjava.net/fastunit/archive/2008/02/15/180116.html http://www.iteye.com/topic/1125517 刚开...
  • liyanhui1001
  • liyanhui1001
  • 2013-11-28 15:38
  • 3779

tomcat启动报错原因分析及解决

1.报错日志 拿到catalina.log的启动日志 2015-8-13 15:24:02 org.apache.catalina.core.StandardContext start 严重: Error listenerStart 2015-8-13 15:24:02 org.apache...
  • u011270461
  • u011270461
  • 2015-08-13 21:40
  • 7422

Tomcat内存溢出的三种情况及解决办法分析

Tomcat内存溢出的原因   在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。   这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:   1.OutOfMemoryError: Java heap space ...
  • caiyanzhi123
  • caiyanzhi123
  • 2016-02-28 18:12
  • 11788

TOMCAT内存溢出及大小调整

一、 tomcat内存设置问题 收藏     在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat、jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常。这主要是由于应用服务器的内存不足引起...
  • happyITLife
  • happyITLife
  • 2012-02-24 16:10
  • 198066

tomcat redeploy内存溢出的问题

tomcat 内存溢出
  • kkgbn
  • kkgbn
  • 2016-09-09 13:45
  • 2268
    个人资料
    • 访问:150941次
    • 积分:3335
    • 等级:
    • 排名:第12006名
    • 原创:193篇
    • 转载:23篇
    • 译文:0篇
    • 评论:7条