问题:Tomcat线程数是否是越大越好呢?java
答案确定是否认的。数据库
Tomcat的处理速度跟线程数不是彻底成正比的,设置不恰当会出现相反的效果。服务的负载计算包括了CPU的使用率和资源等待。tomcat
第一种状况,资源等待比较少,那么系统响应时间就是限制在CPU的计算上面了。测试
这时候线程数应该设置小一点,下降同一时间争抢CPU的线程数,能够提升线程效率,从而提高系统的处理能力。优化
第二种状况,资源等待比较多,好比文件的读写或者请求数据库等。spa
这时候线程数就要增长一些,这样子才能提升处理的请求个数,从而提升系统的处理能力。线程
现实,当线程比较多的时候,cpu在线程切换时消耗的时间随着线程数量的增长愈来愈大,从而致使系统的处理能力下降。资源
connectionTimeout="30000"虚拟机
redirectPort="8443"io
maxThreads="600" acceptCount="800"/>
maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
acceptCount通常跟maxThreads设置差很少大就能够了,具体仍是须要看访问高峰期,排队的请求是否多,是否会出现timeout请求比较多,进行对应的调整。
总结
所以,线程数没有固定的值,须要经过不断地测试和调整、优化才能找到最适合的值。
若是设的太小,能够保证接收的请求较快相应,可是处理的同时处理的请求个数有限,超过的请求可能就直接被拒绝了。
若是设的过大,就会出现大量超时的现象,也有可能出现java虚拟机资源不够用 ,或者系统文件句柄不够用的状况。
一个tomcat处理不过来咱们能够多开几个啊!大家以为呢?