vlambda博客
学习文章列表

性能调优之6-Tomcat参数调优

tomcat 的Connector配置如下

<</span>Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxThreads="800" acceptCount="1000"/>

 其中最后两个参数意义如下:


maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100


        

每个 Connector 需要关联一个线程池,每当 Connector 接收到请求时,需要交给线程池去处理。Connector 可以关联共享的线程池,也可以创建私有的线程池。


性能调优之6-Tomcat参数调优


tomcat能支持最大连接数由maxConnections加上acceptCount来决定。同时maxThreads如何设定?


以下部分结论引用自:http://duanfei.iteye.com/blog/1894387


一般的服务器操作都包括两方面:1计算(主要消耗cpu),2等待(io、数据库等)


第一种极端情况,如果我们的操作是纯粹的计算,那么系统响应时间的主要限制就是cpu的运算能力,此时maxThreads应该尽量设的小,降低同一时间内争抢cpu的线程个数,可以提高计算效率,提高系统的整体处理能力。


第二种极端情况,如果我们的操作纯粹是IO或者数据库,那么响应时间的主要限制就变为等待外部资源,此时maxThreads应该尽量设的大,这样 才能提高同时处理请求的个数,从而提高系统整体的处理能力。此情况下因为tomcat同时处理的请求量会比较大,所以需要关注一下tomcat的虚拟机内 存设置和Linux的open file限制。


现实应用中,我们的操作都会包含以上两种类型(计算、等待),所以maxThreads的配置并没有一个最优值,一定要根据具体情况来配置。

最好的做法是:在不断测试的基础上,不断调整、优化,才能得到最合理的配置。


acceptCount的配置,我一般是设置的跟maxThreads一样大,这个值应该是主要根据应用的访问峰值与平均值来权衡配置的。

如果设的较小,可以保证接受的请求较快相应,但是超出的请求可能就直接被拒绝


如果设的较大,可能就会出现大量的请求超时的情况,因为我们系统的处理能力是一定的。


可以参照文章:

https://blog.csdn.net/tanqian351/article/details/76887358


测试样例分析如下:

性能调优之6-Tomcat参数调优

性能调优之6-Tomcat参数调优

性能调优之6-Tomcat参数调优

性能调优之6-Tomcat参数调优


关于理想的线程数量如何计算?

性能调优之6-Tomcat参数调优


测试demo