• 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处理不过来我们可以多开几个啊!你们觉得呢?

  • 相关阅读:
    Repeater自定义翻页 存储过程实现
    Redis常用命令
    常用的富文本框插件FreeTextBox、CuteEditor、CKEditor、FCKEditor、TinyMCE、KindEditor ;和CKEditor实例
    网站转接支付宝解决方案
    如何有效抓取SQL Server的BLOCKING信息
    SVN 冲突文件详解
    JavaScript可否多线程? 深入理解JavaScript定时机制
    MS SQL Server:分区表、分区索引详解
    支付宝外部商家购物流程
    排查数据库性能的常用sql语句
  • 原文地址:https://www.cnblogs.com/fjping0606/p/10309701.html
Copyright © 2020-2023  润新知