Tomcat性能调优
Tomcat 性能调优,当然前提java VM性能已经调优过了,还没有完成的请先参看 前一篇 jvm性能调优!
tomcat性能调优,着重在并发量,吞吐量上,tomcat一个连接请求(request)就是1个线程,直到线程结束,
所以并发量还受系统最大线程数的影响,windows一般是1024,Linux/Unix是2048,以windows为例,我们设置
不超过半数及512,比较好,当然还需考虑处理能力上,即吞吐量(单位时间处理量),这个就和cpu处理能力
直接挂钩了,频率,核心数,程序业务逻辑的设计,我的建议不妨这样设计,cpu单个线程每1gHz能够在50ms内处理
完一个请求,其实一般的请求足够了那个实时可以并行的,实时线程=cpu个数 * cpu频率数(gHz)*2,为了连续处理,
我们将等待数,设置为不小于实时线程的2倍,香农采样定律你懂的,太少了cpu会有空闲的,太多了,客户端等待的难受;
为什么要*2 ,因为人眼的反应是0.1s呀 就是 100ms! 对于tomcat,主要设置$(tomcat_base_dir)/conf/server.xml 中connector
的属性!
怎么设置直接参看 官方资料 http://tomcat.apache.org/tomcat-7.0-doc/config/http.htmlConnector support attributes:
还有其他的表格,我们来设置,tomcat的连接方式即protocol,
acceptCount
,maxConnections
,,compression:
1. protocol:连接方式
有3个bio( blocking Java connector),nio(non blocking Java connector),apr(the APR/native connector),我们选择nio,java的容易部署处理
2.
acceptCount
请求接收队列,默认的100,超过了就会拒绝接收,具体值可以压力测试,或实际运营,更具峰值确定,如果请求一直均衡处理数的2倍较为合理,然而
实际上就不会均衡请求,不妨设置为500;
3. maxThreads
:
最大处理线程数,默认是100,推荐 cpu个数*cpu核心*频率(gHz)*2 ,
4. compression
Gzip压缩,这个还要在conf/web中也要设置,还要设置压缩的大小默认是2048k等,是否需要,看测试结果
5. disableUploadTimeout
上传失效时间,默认是true,这个需要关闭
6. maxConnections
最大连接数,bio默认最大处理线程数;nio为10000;apr 为8192,windows下为1024 ,
下面来设置
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol
"
URIEncoding="UTF-8"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="60000"
maxConnections
="1000"
minSpareThreads="48"
maxThreads
="1024"
acceptCount="1000"
useURIValidationHack="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
redirectPort="8443"
/>