美文网首页
tomcat线程池详解

tomcat线程池详解

作者: WFF_FFW | 来源:发表于2018-10-25 11:25 被阅读17次
    线程池的原理

    它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠 状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。可能你也许会 问:为什么要搞得这么麻烦,如果每当客户端有新的请求时,我就创建一个新的线程不就完了?这也许是个不错的方法,因为它能使得你编写代码相对容易一些,但 你却忽略了一个重要的问题??性能!例如:一个省级数据大集中的银行网络中心,高峰期每秒的客户端请求并发数超过100,如果 为每个客户端请求创建一个新线程的话,那耗费的CPU时间和内存将是惊人的,如果采用一个拥有200个线程的线程池,那将会节约大量的的系统资源,使得更 多的CPU时间和内存用来处理实际的商业应用,而不是频繁的线程创建与销毁。

    配置executor属性(各项参数值根据自身情况配置)
    1.1)打开/conf/server.xml文件,在Connector之前配置一个线程池:

    <Executor name="tomcatThreadPool"
    namePrefix="tomcatThreadPool-"
    maxThreads="1000"
    maxIdleTime="300000"
    minSpareThreads="200"/>

    参数详解:

    name:共享线程池的名字。这是Connector为了共享线程池要引用的名字,该名字必须唯一。默认值:None;
    namePrefix:在JVM上,每个运行线程都可以有一个name 字符串。这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-;
    maxThreads:该线程池可以容纳的最大线程数。默认值:200;
    maxIdleTime:在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。
    minSpareThreads:Tomcat应该始终打开的最小不活跃线程数。默认值:25。

    配置Connector

    <Connector executor="tomcatThreadPool"
    port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    minProcessors="5"
    maxProcessors="75"
    acceptCount="1000"/>

    参数详解:

    executor:表示使用该参数值对应的线程池;
    minProcessors:服务器启动时创建的处理请求的线程数;
    maxProcessors:最大可以创建的处理请求的线程数;
    acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

    相关文章

      网友评论

          本文标题:tomcat线程池详解

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