公司一台Win2003 server的机器, 上面跑Tomcat 5.
最近,不知道怎么,Tomcat经常不正常, 每天要重起一遍Tomcat的服务才可以.
查log发现,有很多
java.lang.OutOfMemoryError: Java heap space
在网上查了下, 一般是JVM的内存不足引起的, JVM默认只有64M的内存, 而这个tomcat上有很多webapps,估计是内存不够了.
按照网上的文章, 改了catalina.bat, 增加
set JAVA_OPTS=-server -Xms1024m -Xmx1536m -XX:MaxNewSize=512m
停掉Tomcat的服务
运行catalina.bat, 在manager/html里面看到
JVM
Free memory: 891.91 MB Total memory: 1048.18 MB Max memory: 1479.12 MB
看来问题是可以解决了.
不过新的问题来了.
用catalina.bat起来的Tomcat可以用更大的JVM内存, 但是服务器上的Tomcat是用服务的方式启动的. 用服务方式启动的时候, 依旧使用的是默认64M的JVM内存.
试过了在系统变量里面增加JAVA_OPTS环境变量, 重起服务,无效.
后来看了tomcat里面的service.bat. 感觉是在注册表中有相关的JAVA参数.
终于在HKLM\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters里面找到一个叫JavaOptions的multi-string值,
在后面增加下列选项,如图
-server
-Xms1024m
-Xmx1536m
-XX:MaxNewSize=512m
重起Tomcat服务,JVM内存成功变成1G.
后记:不知道TOMCAT到底需不需要这么大的内存,运行一段时间看看,如果free memory一直很多的话,就把参数调小点,免得浪费服务器内存。赫赫
上面的设置适用于Tomcat5, 对于Tomcat6, 注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java中有专门关于"JvmMs"和"JvmMx"设置的键值
阅读(7527) | 评论(0) | 转发(0) |