Tomcat默认的配置已是通过优化的了,留给咱们可优化的空间很小,我
们主要能调整的是:跟具体使用场景相关的设置,大体有:
1:合理分配Tomcat须要的内存
这个是在启动Tomcat的时候设置catalina.sh中的JAVA_OPTS,常见设置以下:javascript
(1)-server:启用JDK的Server版
(2)-Xms:虚拟机初始化时的最小内存
(3)-Xmx:虚拟机可以使用的最大内存(建议到物理内存的80%)
(4)-XX:PermSize:持久代初始值
(5)-XX:MaxPermSize:持久代最大内存(默认是32M)
(6)-XX:MaxNewSize:新生代内存的最大内存(默认是16M)
说明:
(1)通常设置-Xms、-Xmx相等以免在每次GC后调整堆的大小。由于默认空余堆内存小于40%
时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减小堆直到-Xms的
最小限制。
(2)察看配置是否生效:jmap -heap tomcat的进程号
2:Tomcat自己的配置优化
在server.xml中的<Connector>中配置,常见设置以下:
(1)maxConnections :最大链接数,对BIO模式,默认等于maxThreads ;对NIO默认10000;
对APR/native默认8192
(2)maxThreads:最大线程数,即同时处理的任务个数,默认值为200
(3)acceptCount:当处理任务的线程数达到最大时,接受排队的请求个数,默认100
(4)minSpareThreads:最小空闲线程数,默认10
(5)compression :设置是否开启GZip压缩css
(6)compressableMimeType:哪些类型须要压缩,默认是text/html,text/xml,text/plain
(7)compressionMinSize:启用压缩的输出内容大小,默认为2048
(8)enableLookups:是否反查域名,为了提升处理能力,应设置为false
(9)connectionTimeout:网络链接超时,单位毫秒。设置为-1 表示永不超时,一般可设置
为2000毫秒。
说明:
(1)若是要加大并发链接数,应同时加大maxThreads和acceptCount,能够两个设置同样
(2)WebServer容许的最大链接数还受制于操做系统的内核参数设置,可经过ulimit -a 查看
(3)若是配置了<Executor>,在<Connector>中经过executor属性指定参照<Executor>,那么
<Connector>中关于线程的配置失效,以<Executor>中配置为准
3:关于BIO/NIO/APR
(1)BIO是最稳定最老的一个链接器,是采用阻塞的方式,意味着每一个链接线程绑定到每一个
Http请求,直到得到Http响应返回,若是Http客户端请求的是keep-Alive链接,那么这些
链接也许一直保持着直至达到timeout时间,这期间不能用于其它请求。
(2)NIO是使用Java的异步IO技术,不作阻塞,要使用的话,直接修改server.xml里的
Connector节点,修改protocol为:
protocol="org.apache.coyote.http11.Http11NioProtocol"html
(3)APR是使用原生C语言编写的非堵塞I/O,可是须要安装apr和native,直接启动就支持
apr,能大幅度提高性能。使用时指定protocol为
protocol=“org.apache.coyote.http11.Http11AprProtocol” 。
能够到http://apr.apache.org/download.cgi去下载,大体的安装步骤以下:
A:安装apr
./configure --prefix=/usr/local/apr
make make install
B:安装apr-iconv
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make make install
C:安装apr-util
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apriconv=/
usr/local/apr-iconv/bin/apriconv
make make install
D:安装tomcat-native ,就在Tomcat的bin下自带
tar zxvf tomcat-native.tar.gz
cd tomcat-native-1.1.29-src/jni/native
./configure --with-apr=/usr/local/apr
make make installjava
E:设置apr 的环境变量
进入Tomcat的bin路径下,打开catalina.sh,在文件的#!/bin/sh下添加以下内容:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export LD_LIBRARY_PATH
这样就只是给这个TOMCAT添加了APR,不破坏其它TOMCAT的配置
G:从新启动Tomcat,查看日志信息,应该有相似以下的信息:
org.apache.catalina.core.AprLifecycleListener.init Loaded APR based Apache
Tomcat Native library 1.1.29 using APR version 1.5.0.
参考配置以下:
<Connector port="8080" protocol=" org.apache.coyote.http11.Http11AprProtocol "
URIEncoding="UTF-8"
maxConnections="10000"
maxThreads="2000"
acceptCount="2000"
minSpareThreads="100"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
redirectPort="8443" />apache