美文网首页
tomcat最大线程数设置的依据

tomcat最大线程数设置的依据

作者: 挡不住的柳Willow | 来源:发表于2019-05-16 14:59 被阅读0次

    重要参数

    • maxThread:tomcat的maxThread指的是处理业务的最大线程数,位于Connector组件的层次,在springboot中由server.tomcat.max-threads参数决定,默认是200
    • acceptCount:当前线程数达到maxThread的时候,等待队列的最大长度,默认为100

    tomcat接收请求创建线程的过程

    • 1、如果当前线程数还没达到maxThread,则新建一个线程去执行任务
    • 2、如果已经达到了maxThread,但是等待队列中的任务还没有达到acceptCount,则将请求任务放入等待队列中,直到有线程空闲下来
    • 3、如果线程数达到maxThread并且等待队列已满,则拒绝请求

    参数设置的依据

    从计算机的角度来说,一个CPU同一时间只能执行一个线程的任务,单CPU多线程只是计算机给我们开的玩笑。
    一般来说,服务的瓶颈主要有两种:

    • CPU
    • IO等待时间

    我们从这两个角度来分析maxThread应该如何设置:

    • CPU
      如果不考虑IO,也就是说服务器很少去做磁盘操作或者网络请求,那maxThread设置为与CPU数目同等的大小是最合适的,因为没有IO等待时间,CPU利用率百分百,线程与CPU数量一致,可以消除线程上下文切换带来的消耗
    • IO
      如果tomcat服务调用了mysql,那么会带来网络IO和磁盘IO的消耗,我们知道CPU发起IO操作的指令之后,就处于空闲状态,IO操作交给DMA处理。一般情况下我们的接口服务中不会有太多的计算,大多数瓶颈都在于数据库、磁盘、rpc服务调用的操作上,因此可以将maxThread的值调大一些,让CPU尽可能处理更多的请求,当然也要考虑到线程上下文切换的开销,也是会消耗CPU的

    总结

    本文只是从理论的角度讨论了maxThread设置的凭据,如果是CPU密集型的服务,设置线程数不宜多;如果是IO密集型,适当地上调线程数可以增加吞吐量

    相关文章

      网友评论

          本文标题:tomcat最大线程数设置的依据

          本文链接:https://www.haomeiwen.com/subject/aljbaqtx.html