我有一个tomcat 6.0.20,apr 1.2,jdk 1.6.0_15,mysql 5.1.38在一个4GB内存的rhel盒子上运行.有一个简单的jsp/servlet应用程序,有5个用户,一个struts 1.2.0.9,其中有64个用户,一个struts 2.0应用程序,有35个用户.struts 2.0用户每秒都会输入一次,每天大约有900个条目.我也在最后两个应用程序中使用toplink来持久化.我已经将所有未引用的对象声明为null,在代码中,已经从struts 2站点和tomcat站点应用了配置文件的生产值.在mysql中应用线程缓存,减少wait_timeout和interactive_timeout等同于tomcat的会话超时.在linux中增加文件描述符.重新设计的查询.检查了线程转储,观察了gc统计数据,在此基础上应用了上面的变化,
YET仍面临"java.lang.OutOfMemoryError"错误.
在不同的时间它的不同的东西,有时它的Servlet.service(),有时它的image.servlet,有时它导致它的jasper.
非常令人沮丧,因为错误不是一成不变的,而是随着时间的推移不断变化
任何帮助请非常感谢!!!
JAVA_OPTS = -server -XX:+ UseConcMarkSweepGC -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled -XX:+ CMSParallelRemarkEnabled(tomcat manager报告34 mb为空所以没有使用permsize,mx和mn等)
persistence.xml中
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/dbname?autoReconnect=false"/>
Run Code Online (Sandbox Code Playgroud)
server.xml中
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" compression="on" compressableMimeType="application/octet-stream,text/html,text/xml,text/plain,application/x-javascript,image/gif,text/css,image/gif,application/vnd.ms-excel,application/pdf" enableLookups="false"/>
Run Code Online (Sandbox Code Playgroud)
的context.xml
<Context reloadable="false" delegate="false" privileged="false">
Run Code Online (Sandbox Code Playgroud)