开发者社区> 问答> 正文

Tomcat 6.0 共享线程池的配置:报错

配置很简单
第一步,打开共享的线程池

  <Service name="Catalina">
    <!--The connectors can use a shared executor, you can define one or more named thread pools-->

      <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
      maxThreads="1000" minSpareThreads="50" maxIdleTime="600000"/>

默认前后是注释<!-- -->掉的,去掉就可以了。其中

name
The name used to reference this pool in other places in server.xml. The name is required and must be unique.
这个是线程池的名字,必须唯一,我们在后面的配置里要用到这个东西

namePrefix
(String) The name prefix for each thread created by the executor. The thread name for an individual thread will be namePrefix+threadNumber
线程的名字前缀,用来标记线程名字的,这样每个线程就用这个前缀加上线程编号了,比如
catalina-exec-1
catalina-exec-2

maxThreads
(int) The max number of active threads in this pool, default is 200
允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,反正只是限制而已,不占用资源

minSpareThreads
(int) The minimum number of threads always kept alive, default is 25
最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源。

maxIdleTime
(int) The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads. Default value is 60000(1 minute)
超过最小活跃线程数量的线程,如果空闲时间超过这个设置后,会被关别。默认是1分钟。

threadPriority
(int) The thread priority for threads in the executor, the default is Thread.NORM_PRIORITY
线程的等级。默认是Thread.NORM_PRIORITY

第二步
在 Connector里指定使用共享线程池

    <Connector
      port="8009"
      protocol="AJP/1.3"
      maxThreads="5000"
      executor="tomcatThreadPool"

注意,一旦使用了线程池,则其它的线程属性,比如 maxThreads等将被忽略

我测试了一下,由于每次请求不再需要重新分配线程,系统响应速度还是有很明显的改善的。

展开
收起
kun坤 2020-06-14 17:00:33 569 0
1 条回答
写回答
取消 提交回答
  • 经常这样配

    ######

    还有就设置jvm

    ######

    线程池可以被AJP使用吗,配置文件如下:

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" executor="tomcatThreadPool"/>



    2020-06-14 17:00:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Tomcat 的云原生演进 立即下载
多IO线程优化版 立即下载
低代码开发师(初级)实战教程 立即下载