Tomcat从5.5版本开始,支持以下四种Connector的配置分别为:
1、<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"/>2、<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>3、<Connector executor="tomcatThreadPool" port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />4、<Connector executor="tomcatThreadPool" port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
1方式波动较大,但处理的请求数相对会高,
2方式性能是很稳定,但是处理的请求数也是最差的,这种方式就是Tomcat的默认配置。
3方式则波动很大,处理的请求与2方式差不多,不时有停滞。
4方式是在1方式的基础上加入线程池,
但是使用2方式时,出现一个问题,频繁的请求一个页面,jvm堆中老年代内存持续上升,最终导致OOM,服务器挂掉,以下是我的配置:
server.xml:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" executor="tomcatThreadPool" maxThreads="2000" minSpareThreads="200" maxSpareThreads="1000" acceptCount="200" disableUploadTimeout="true" compression="on" compressionMinSize="2048" enableLookups="false" noCompressionUserAgents="gozilla,traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpeg,image/png" redirectPort="8443" URIEncoding="UTF-8"/>
tomcat6.conf:
JAVA_OPTS="-Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -Xms512m -Xmx512m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:PermSize=128M -XX:MaxPermSize=128M -XX:NewRatio=4 -XX:ParallelGCThreads=4 -XX:+UseParallelOldGC -XX:+UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/ -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10208 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.access.file=/usr/share/tomcat6/conf/jmxremote.access -Dcom.sun.management.jmxremote.password.file=/usr/share/tomcat6/conf/jmxremote.password"
Jconsole监控:
使用默认方式则不会出现这种情况,哪位大神帮忙看看配置是否有问题!谢谢,还望赐教