Tomcat线程数与处理速度的关系

问题: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处理不过来咱们能够多开几个啊!大家以为呢?

相关文章
相关标签/搜索