Tomcat连接数限制的核心参数
Tomcat的连接数限制主要由Connector配置中的参数控制,这些参数直接影响并发处理能力和请求排队行为:
CentOS系统级的连接数限制
Tomcat的连接数还受CentOS系统级参数限制,主要包括文件描述符和内核TCP参数:
/etc/security/limits.conf文件,添加以下内容:* soft nofile 65536(软限制,当前会话有效)* hard nofile 65536(硬限制,永久有效)/etc/sysctl.conf文件中的参数,提升TCP连接处理能力:
net.core.somaxconn:内核监听队列的最大长度(默认值通常较小,如128),建议设置为与acceptCount一致或更大(如65535),避免连接被内核拒绝。net.ipv4.tcp_tw_reuse:允许复用TIME_WAIT状态的连接(设为1),减少TIME_WAIT连接占用,提升并发性能。net.ipv4.tcp_tw_recycle:快速回收TIME_WAIT连接(设为1),但需注意在NAT环境下可能导致连接异常,建议仅在内部网络使用。Tomcat Connector配置示例
以下是一个针对4核8G服务器的Tomcat Connector配置示例(使用NIO协议),兼顾并发处理能力和系统稳定性:
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="400" <!-- 最大线程数:根据CPU核心数(4核)设置为400 -->
minSpareThreads="50" <!-- 最小空闲线程数:保持50个线程随时待命 -->
acceptCount="200" <!-- 等待队列长度:设置为maxThreads的0.5倍 -->
maxConnections="2000" <!-- 最大连接数:设置为maxThreads的5倍,适应高并发场景 -->
/>
该配置通过增加maxThreads和maxConnections提升并发处理能力,同时通过acceptCount控制等待队列长度,避免请求被突然拒绝。
连接数限制的查看与验证
netstat命令查看Tomcat端口(如8080)的连接状态,统计ESTABLISHED(已建立)和TIME_WAIT(等待关闭)的连接数:netstat -ant | grep 8080 | awk '{print $6}' | sort | uniq -c
ps命令查看Tomcat进程的线程数(nlwp表示轻量级进程数,即线程数):ps -o nlwp $(pgrep -f tomcat) | tail -1
注意事项