程序运行了好几个月都没问题。突然有一天挂掉了,日志说内存溢出,重启tomcat,过一会儿还是溢出。。
我就纳闷了。听说请求增加了,于是改了server.xml中的线程数:
server.xml中
<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Protocol" enableLookups="false"   maxThreads="500" acceptCount="1500" acceptorThreadCount="1" connectionTimeout="4000" redirectPort="8443" />倒是不溢出了,内存却占了n多。tomcat测试环境测试,内存只占几百M,都不会上G放到线上环境内存顿时就占了2G多。。并且打开页面也会偶尔卡一下,卡的时候cpu很高,甚至100%它主要有每秒几百个请求,都是请求同一个servlet。测试环境中我也模拟了同样的请求。请教了几个人,有说是GC的导致的。我感觉像是线上环境配置有关系
这是线上环境的一些参数:catalina.sh中有:
JAVA_OPTS='-server -Xmx2048m -Xms2048m -Xss256k'虽然配置了2G的内存,但是一放上就占2G也不太正常吧?server.xml中
<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Protocol" enableLookups="false"   maxThreads="500" acceptCount="1500" acceptorThreadCount="1" connectionTimeout="4000" redirectPort="8443" />求高手帮忙分析下。如何解决

解决方案 »

  1.   

    JAVA_OPTS='-server -Xmx2048m -Xms2048m -Xss256k'
    这个网上查一下有很多啊怎么会配错了 Xms 最小你也配个2G能不启动就占了2G吗?配个几百M就有了吧
      

  2.   

    在开发环境是不会的只有单独启动tomcat时配制的才会起作用
      

  3.   

    什么意思??单独启动tomcat?线上环境也是很多其他的应用的共用的机器啊
      

  4.   

    内存溢出问题比较难找。可以看看hs_xxxx.log。看看是调用什么方法时内存溢出。
      

  5.   

    比如你用MyEclipse开发的当用MyEclipse启动你配制的是不会启作用的
    只有当你用tomcat的startup.bat启动才会启作用还有什么事自已不试怎么知道了,我讲了这么多你试下不就知道有没有用吗
      

  6.   

    我测试环境不是本地测试环境。是和线上同样的环境,同样是linux,同样加了这些参数。
      

  7.   

    hs_xxxx.log这个是什么日志??
    不懂
    这个?
    0 Jul 31 19:11 host-manager.2011-07-31.log