Tomcat调优
首先,打开tomcat/conf/server.xml文件,搜索Executor name=“tomcatThreadPool”,开启并调整为:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxSpareThreads="50" maxIdleTime="60000"/>
然后,修改<Connector …>节点,增加 executor 属性,搜索port=“80”,调整为:
<Connector executor="tomcatThreadPool"
port="80"
protocol="HTTP/1.1"
URIEncoding="UTF-8"
connectionTimeout="30000"
enableLookups="false"
disableUploadTimeout="false"
connectionUploadTimeout="150000"
acceptCount="300"
keepAliveTimeout="120000"
maxKeepAliveRequests="1"
compression="on"
compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png" redirectPort="8443" />
参数说明:
- port : 端口
- connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
- enableLookups :如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。
- keepAliveTimeout :长连接最大保持时间(毫秒)。此处为15秒。
- maxKeepAliveRequests : 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间)
- maxHttpHeaderSize:http请求头信息的最大程度,超过此长度的部分不予处理。一般8K。
- URIEncoding : -指定Tomcat容器的URL编码格式。
- acceptCount: 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认为10个。
- disableUploadTimeout:上传时是否使用超时机制。
- enableLookups: 是否反查域名,取值为:true或false。为了提高处理能力,应设置为false。
- bufferSize: defines the size (in bytes) of the buffer to be provided for input streams created by this connector. By default, buffers of 2048 bytes are provided.
- maxSpareThreads:最多空闲连接数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
- maxThreads: 最多同时处理的连接数,Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。
- minSpareThreads:最小空闲线程数,Tomcat初始化时创建的线程数。
- minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10。(用于Tomcat4中)
- maxProcessors: 最大连接线程数,即:并发处理的最大请求数,默认值为75。(用于Tomcat4中)
- maxIdleTime: 线程最大空闲时间。
JVM调优
Windows打开tomcat/bin/catalina.bat,linux打开tomcat/bin/catalina.sh文件,如linux–首行加入如下参数:
CATALINA_OPTS="
-server
-Xms8192M
-Xmx8192M
-Xss512k
-XX:NewSize=2250M
-XX:MaxNewSize=2250M
-XX:PermSize=128M
-XX:MaxPermSize=256M
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
-XX:+DisableExplicitGC
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:MaxTenuringThreshold=31
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-Duser.timezone=Asia/Shanghai
-Djava.awt.headless=true"
|