Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发。
操作系统对于进程中的线程数有一定的限制:
Windows 每个进程中的线程数不允许超过 2000
Linux 每个进程中的线程数不允许超过 1000
另外,在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。
Tomcat 默认的 HTTP 实现是采用阻塞式的 Socket 通信,每个请求都需要创建一个线程处理。
Tomcat 还可以配置 NIO 方式的 Socket 通信,在性能上高于阻塞式的,每个请求也不需要创建一个线程进行处理,并发能力比前者高。但没有阻塞式的成熟。
maxThreads="1500" 最大并发数
minSpareThreads="100" 初始创建的线程数
maxSpareThreads="1000"一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="500" 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
配置实例:
<Connector port="8080" protocol="HTTP/1.1"
useBodyEncodingForURI="true" enableLookups="false" connectionTimeout="30000"
maxConnections="2000" acceptCount="2000" maxThreads="1500"
minSpareThreads="200" maxSpareThreads="1000" compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata" maxProcessors="1000" minProcessors="5" acceptorThreadCount="10" redirectPort="8443" URIEncoding="UTF-8" />