关于Tomcat调优的一些总结,欢迎拍砖。
1、线上环境Java版本:
java version "1.6.0_30" Java(TM) SE Runtime Environment (build 1.6.0_30-b12) Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)
2、修改$CATALINA_HOME/bin/catalina.sh:
其中有一个CATALINA_OPTS参数,可以配置Tomcat启动时的JVM参数。
CATALINA_OPTS="-Xms4g -Xmx4g -Xmn3g -Xss256k \ -server \ -XX:PermSize=128M \ -XX:MaxPermSize=128M \ -XX:+UseConcMarkSweepGC \ -XX:+UseAdaptiveSizePolicy \ -XX:+CMSClassUnloadingEnabled \ -XX:+CMSPermGenSweepingEnabled \ -XX:+UseCMSCompactAtFullCollection \ -XX:+DisableExplicitGC \ -XX:CMSFullGCsBeforeCompaction=10 \ -XX:CMSMaxAbortablePrecleanTime=5"
基本就是重置各代大小、Perm区大小、启用CMS等...此处不再做详细解释,具体调优参数见我的另外一篇blog:《某高并发应用JVM启动参数配置》
3、修改$CATALINA_HOME/conf/server.xml:
<Connector port="8101" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="30000" disableUploadTimeout="true" URIEncoding="UTF-8" />
这里主要是对Tomcat Connector进行配置,上面是一个样例。
配置项如下:
maxThreads
Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。
可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。
acceptCount
指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。
要加大并发连接数,应同时加大以上两个参数。最大连接数也受制于操作系统内核参数设置,通常Linux是1000个左右。
minSpareThreads
Tomcat初始化时创建的线程数。默认值4。
maxSpareThreads
一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值50。
enableLookups
是否反查域名,默认值为true。为了提高处理能力,应设置为false
connnectionTimeout
网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
maxKeepAliveRequests
保持请求数量,默认值100。
bufferSize
输入流缓冲大小,默认值2048 bytes。
compression
压缩传输,取值on/off/force,默认值off。
注,压缩相关参数:
compression="on" <!-- 打开压缩功能 --> compressionMinSize="2048" <!-- 启用压缩的输出内容大小,这里面默认为2KB --> noCompressionUserAgents="IE, FireFox, Opera" <!-- 对于以下的浏览器,不启用压缩 --> compressableMimeType="text/html,text/xml" <!-- 压缩类型 -->