日期:2014-05-17  浏览次数:20647 次

求助!apache+mod_jk+tomcat,在运行一段时间后tomcat报outofmermory,然后jk再也连接不上tomcat
软件版本:
windows server 2003 sp2
apache2.2
mod_jk1.2.26
tomcat6.0.13解压版
sqlserver2005+sp4

现象说明
该项目目前运行在生产环境上,经常出现运行几天之后,tomcat抛heap内存溢出异常,jk无法转发请求给tocmat.
然后一段时间后,通过端口号还可以直接访问tomcat,但是jk还是无法转发。必须把apache和tomcat两个都重启之后,才能恢复。国家单位生产环境的重启真的很蛋疼!

运行情况
平时同时在线人数大概在200上下,因为项目里有查询报表的功能,现在报表的功能实现比较笨,从数据库捞一批数据出来,再在java代码里计算。这里会占用比较多的jvm heap 内存。

疑问
1.什么原因会导致tomcat在内存溢出恢复后,JK还是无法进行转发?如何配置能解决这一个情况?
2.因为是32位的系统,一个jvm只有1.5G的总内存。服务器总的内存有12G,前段时间还特意将几个工程拆开放在3个tomcat中,主功能独立一个tomcat,但还是报内存溢出的问题。有没办法从配置上去解决呢,或者调整GC回收类型是否有助于改善?因为有时候通过tomcat的管理端进去,看到jvm内存就浮动很厉害,有时候1000多M可用,有时候立马降到100M。

配置文件
workers.properties

workers.java_home=D:/install/jdk1.6.0_06
ps=/
worker.list=ajp13,tomcat2,tomcat3,status
worker.ajp13.port=8009
worker.ajp13.host=127.0.0.1
worker.ajp13.type=ajp13

worker.tomcat2.port=9009
worker.tomcat2.host=127.0.0.1
worker.tomcat2.type=ajp13

worker.tomcat3.port=7009
worker.tomcat3.host=127.0.0.1
worker.tomcat3.type=ajp13

worder.status.type=status


catalina.bat
set JAVA_OPTS=-server -Xms1200M -Xmx1200M -Xss512k -XX:PermSize=256M -XX:MaxPermSize=300M -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=256m  -XX:+UseFastAccessorMethods -Djava.awt.headless=true


httpd-mpm.conf
# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum  number of requests a server process serves
<IfModule mpm_winnt_module>
ThreadsPerChild 250
ThreadLimit 300
MaxRequestsPerChild 50000
Win32DisableAcceptEx
EnableMMAP Off
  EnableSendfile Off
</IfModule>


server.xml
   <!-- Define an AJP 1.3 Connector on port 9009 -->
    <Connector port="9009" protocol="AJP/1.3" redirectPort="9443" 
     maxHttpHeaderSize="8192" maxThreads="250" minSpareThreads="200" maxSpareThreads="250"
     enableLookups="false" acceptCount="250" connectionTimeout="30000" disableUploadTimeout="true"
     useURIValidationHack="false"
      compression="on" compressionMinSize="2048"
      compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/>


tomcat异常:

2013-11-8 8:59:14 org.apache.jk.common.ChannelSocket processConnection
警告: processCallbacks status 2
2013-11-8 8:59:14 org.apache.jk.common.ChannelSocket processConnection
警告: processCallbacks status 2
2013-11-8 8:59:21 org.apache.jk.common.ChannelSocket processConnection
警告: processCallbacks status 2
2013-11-8 8:59:49 org.apache.jk.core.MsgContext action
警告: Error sending end packet