Tomcat 默认采用阻塞式IO来处理并发请求,因此Tomcat所能支持的并发用户受并发线程的控制。如果将Tomcat开启NIO(非阻塞式IO)来处理并发请求,那么Tomcat所能支持的并发用户会有所提升。Tomcat默认采用阻塞式IO来处理并发请求,如果需要启动NIO,处理并发请求,那需要用户重新配置。配置方法是修改Tomcat的conf目录下的server.xml文件,在该文件中修改其中的<Connector .../元素>,具体配置哪些属性,可以启动Tomcat,然后访问http://localhost:8080/docs/config/http.html页面
对于阻塞式IO,如果需要修改Tomcat所能支持的并发线程数,同样也是修改conf目录下的server.xml文件的<Connector.../>元素
这指明该Tomcat最多只能支持200个并发线程,因此最多支持20个并发请求。
还有几个其他的参数
<span style="font-family:Microsoft YaHei;font-size:14px;"><Connector port="80" protocol="HTTP/1.1"
maxThreads="200"
<span style="color:#ff6666;">minSpareThreads="100"
maxSpareThreads="500"
acceptCount="700"</span>
connectionTimeout="20000"
redirectPort="8443" /></span>
其中:
minSpareThreads = "100" //初始化时创建的线程数
maxSpareThreads = "500" //一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程
acceptCount = "700" //指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中,请求超过这个数的请求将不予处理
打开Tomcat的Status控制台,上面显示Tomcat最多支持200个并发线程,当前有10个线程,其中4个处于busy的线程
Max threads: 200 Current thread count: 10 Current thread busy: 4
是不是把conf/server.xml文件的<Connector .../>元素中把maxThreads属性设置的越大,那Tomcat所能支持的并发线程就越多?
理论上是这样的,但随着并发线程数的增大,系统性能下降的越厉害,这就需要衡量项目响应速度与并发用户的关系。当硬件设施固定后,Tomcat所能支持的并发线程数是有极限的,如果需要增加Tomcat所能支持的并发线程数,则只能考虑提升硬件了。
打开Tomcat ,http://localhost:8080/,登录server status,需要用户名和密码,Tomcat7中没有设置任何默认用户,因而需要手动往Tomcat7的conf文件夹下的tomcat-users.xml文件中添加用户
<span style="font-family:Microsoft YaHei;font-size:14px;"><role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles=" admin-gui , manager-gui "/></span>
其中admin-gui和manager-gui是可选的。