当前位置: 代码迷 >> 高性能WEB开发 >> 请教tomcat一段时间就死机是什么情况
  详细解决方案

请教tomcat一段时间就死机是什么情况

热度:248   发布时间:2012-03-15 11:50:38.0
请问tomcat一段时间就死机是什么情况?
和数据库的链接有关系吗?

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="200" />
<property name="maxActive" value="1608" />
<property name="maxIdle" value="200" />
<property name="minIdle" value="0" />
<property name="maxWait" value="300000" />
<property name="numTestsPerEvictionRun" value="3" />
<property name="testOnBorrow" value="true" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="false" />
<property name="validationQuery" value="select 1 from DUAL" />
<property name="defaultAutoCommit" value="false" />
<property name="defaultReadOnly" value="false" />
<property name="poolPreparedStatements" value="false" />
<property name="maxOpenPreparedStatements" value="0" />
<property name="minEvictableIdleTimeMillis" value="1800000" />
<property name="timeBetweenEvictionRunsMillis" value="900000" />
</bean>

------解决方案--------------------
有错误日志没有?
------解决方案--------------------
内存泄露了
------解决方案--------------------
java.lang.OutOfMemoryError: PermGen space
内存溢出。。。

解决方法也一定是加大内存。
如果你的WEB APP下都用了大量的第三方jar, 其大小 超过了jvm默认的大小(4M)那么就会产生此错误信息了。 

------解决方案--------------------
把你的jar包放在tomcat的lib里面,或者改jvm的内存
------解决方案--------------------
写一个批处理,来启动tomcat

@echo off

set JAVA_HOME=D:\Program Files\Java\jdk1.6.0_20
set PATH=%JAVA_HOME%\bin
set CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
set JAVA_OPTS=-Xms256m -Xmx512m -Duser.timezone=GMT+08 -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Dcom.sun.management.jmxremote

C:
CD C:\Program Files\apache-tomcat-6.0.20\bin
startup.bat
------解决方案--------------------
试试看吧
------解决方案--------------------
修改 tomcat\bin\Catalina.bat 文件
在166行左右
rem Execute Java with the applicable properties ”以下每行
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

在 %DEBUG_OPTS% 后面添加-Xms256m -Xmx512m

保存后,重新以命令行的方式运行 tomcat ,即可,然后通过最后面介绍的如何观察tomcat现有内存情况的方法进行查看是否已经变更成功。

------解决方案--------------------
java.lang.OutOfMemoryError: PermGen space 

PermGen 是存放加载的class的空间。 这个调Xmx Xms没用, 你需要适当的调一下这个参数:
  相关解决方案