1. 提高JVM栈内存Increase JVM heap memory
配置TOmcat的配置文件下的catalinatomcat server folder/bin
- Windows:catalina.bat
- Linux:catalina.sh
JVM通常不去调用垃圾回收器,所以服务器可以更多关注处理web请求,并要求尽快完成。 下面,给出这个文件的配置信息,
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC
2. 解决JRE内存泄露
最新的tomcat版本6.0.26及以上就可以解决JRE内存泄露,因为它包含了一个监听器来处理JRE和PermGen的内存泄漏。tomcat server folder/conf/server.xml
使用的监听器是
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
3. 线程池设置
tomcat server folder/conf/server.xml
-
方法一:直接配置在Connector
<Connector port="8080" address="localhost" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8181" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
-
方法二:配置Executor(推荐配置)
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="250" minSpareThreads="20"/> <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
4. gzip压缩
tomcat server folder/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8181" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla,traviata" compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain" />
5. protocol:NIO
tomcat server folder/conf/server.xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8181 "compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla,traviata" compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain"/>
6. Tomcat原生库(APR)-需要Lib
Tomcat的原生库基于Apache可移植运行时(Apache Portable Runtime简称APR),给程序员提供了超强的扩展性和性能,在产品运作中帮助融合原生的服务器技术以展现最佳的性能