在tomcat中用户每一个请求都是一个线程,所以可以使用线程池来提高tomcat性能
修改conf目录下 server.xml文件
#将注释打开,开启执行器
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="100"/>
参数说明:
maxThreads:最大并发数,默认设置 200,一般建议在 500 ~ 1000,根据硬件设施和业务来判断 minSpareThreads:Tomcat 初始化时创建的线程数,默认设置 25 prestartminSpareThreads: 在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就没啥效果了 maxQueueSize,最大的等待队列数,超过则拒绝请求
在Connector中设置executor属性指向上面的执行器
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
重启tomcat生效,进入服务状态页面
最大并发数显示 -1 初始化为50已经生效,关于为什么最大并发数配置的是500显示为-1
经过测试,这个属性是生效的,将其设为1后,Current thread count(当前线程数)是不会超过1的,
实际上是生效的,查了tomcat7文档的maxThreads属性
最后一句话“Note that if an executor is configured any value set for this attribute will be recorded correctly but it will be reported (e.g. via JMX) as -1 to make clear that it is not used.”就说到了这个情况,意思大概是:
如果配置了一个Executor,则该属性的任何值集将被正确记录,但是它将被显示为-1
显示 -1的问题参考https://blog.csdn.net/weixin_38278878/article/details/80144397