Tomcat 可以通过 Executor 来配置线程池,官方文档 。
关于线程池有三个重要参数:
maxThreads: 最大线程数
minSpareThreads: 最小的保持活动的线程数
maxIdleTime
:线程的最大空闲时间,超过这个时间将被干掉
假设上述三个配置项我们指定了值分别为最大100个线程、最小10个线程、空闲时间30秒
可矛盾在于,当你线程数达到最大值100时,基本上就不会将下来了。因为降下来要满足空闲时间超过30秒,可Tomcat每次接收请求时,都是从池里随机拿出一个线程来处理该请求的,所有很难有线程的空闲时间超过30秒的,当然了,前提是访问量不能太小。
感觉不出来矛盾在哪里,你的意思线程最小没用?
######感觉不出来矛盾在哪里,你的意思线程最小没用?
是的,这个值只在最开始启动的时候有用。我现在看oschina系统中的线程列表,那些 HTTP-9081-exec-xxxx 的线程数永远不会降下来。
######感觉不出来矛盾在哪里,你的意思线程最小没用?
是的,这个值只在最开始启动的时候有用。我现在看oschina系统中的线程列表,那些 HTTP-9081-exec-xxxx 的线程数永远不会降下来。
的确是这样,数据库连接池也是这样。我一般都把最小值和最大值设成一样,这样在启动时就能把所有连接都建立起来,而不会在用户请求时再建立连接,这样可以保证瓶颈不在连接中。
######用mac 中文五笔输入法不太好用。所以直接用 英文好的。
数据库连接池 min && max 是它三到五倍 左右。我们项目我是这样设的。5的话,我会30-45左右。
######经过几天的测试发现,线程数还是会降下来的。
######经过几天的测试发现,线程数还是会降下来的。
哈哈,在访问是不会高峰降下来的,但是在夜晚或着访问量很低的情况下肯定会有所下降,但是会降多少呢?
######Tomcat 是从空闲线程之中随机获取的吗?难道不是按照 Hash 的顺序获取的?版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。