开发者社区> 问答> 正文

Tomcat 的 Executor 配置项 maxIdleTime 的问题 :报错

我怎么感觉 maxIdleTime 这个配置没用呢? 官方文档对这个配置项的解释是当线程空闲时间超过指定时间就会关闭,默认时间是1分钟。

可是我却从来没发现 OSChina 启动的那么多 Tomcat 线程又被回收过,特别是凌晨很空闲的时候也是如此。

用的是 Tomcat 7.0.32

展开
收起
kun坤 2020-06-06 19:01:15 479 0
1 条回答
写回答
取消 提交回答
  • 也许可能大概是没有用吧,应该和版本有关######呵呵######不清楚,现在做的项目还没达到高访问量。######

    翻了osc上面tomcat的源码,发现Tomcat在底层用的是 java.util.concurrent 包,StandardThreadExecutor里面有个TaskQueue extends LinkedBlockingQueue的变量,它的初始容量是Int最大值...提供了对外的set、get方法,不知道tomcat配置中会不会更改,要是有时间再去下载源码编译看看才知道,如果没改,那意味着maxIdleTime的设置无效。。。

    本来昨晚11点想回复的,结果,亲,现在都几点了,早点洗洗睡吧 :) 

    ######我了tomcat的源码,maxIdleTime是jdk的threadpoolexecutor的keepalivetime,keepalivetime是指当前线程总数超过corePoolSize,会将空闲时间超过maxIdleTIme的thread杀死知道线程总数为corePoolSize。你没看到线程回收,应该是线程总数没有达到corePoolSize。只有线程数达到corePoolSize,并且taskQueue队列满了才会添加worker线程。
    2020-06-06 19:01:21
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Apache Tomcat 的云原生演进 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载