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

问题:Tomcat线程数是不是越大越好呢?

答案肯定是否定的。

Tomcat的处理速度跟线程数不是完全成正比的,设置不恰当会出现相反的效果。服务的负载计算包括了CPU的使用率资源等待

 

第一种情况,资源等待比较少,那么系统响应时间就是限制在CPU的计算上面了。

这时候线程数应该设置小一点,降低同一时间争抢CPU的线程数,可以提高线程效率,从而提升系统的处理能力。

 

第二种情况,资源等待比较多,比如文件的读写或者请求数据库等。

这时候线程数就要增加一些,这样子才能提高处理的请求个数,从而提高系统的处理能力。

 

现实,当线程比较多的时候,cpu在线程切换时消耗的时间随着线程数量的增加越来越大,从而导致系统的处理能力降低。

 

connectionTimeout="30000"

redirectPort="8443"

maxThreads="600" acceptCount="800"/>

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

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

acceptCount一般跟maxThreads设置差不多大就可以了,具体还是需要看访问高峰期,排队的请求是否多,是否会出现timeout请求比较多,进行对应的调整。

 

总结

因此,线程数没有固定的值,需要通过不断地测试和调整、优化才能找到最适合的值。

如果设的过小,可以保证接收的请求较快相应,但是处理的同时处理的请求个数有限,超过的请求可能就直接被拒绝了。

如果设的过大,就会出现大量超时的现象,也有可能出现java虚拟机资源不够用 ,或者系统文件句柄不够用的情况。

一个tomcat处理不过来我们可以多开几个啊!你们觉得呢?

 

posted @ 2019-01-23 16:22  陌上归人的博客  阅读(559)  评论(0编辑  收藏  举报