Tomcat在Debian上的性能调优技巧
Http11NioProtocol)或NIO2(Http11Nio2Protocol)连接器,它们比传统的BIO(阻塞I/O)更适合高并发场景,能显著提升请求处理吞吐量。例如:<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443"/>
<Connector port="8443" protocol="org.apache.coyote.http2.Http2Protocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem" certificateFile="conf/localhost-rsa-cert.pem" type="RSA"/>
</SSLHostConfig>
</Connector>
maxConnections(最大连接数,默认10000,可根据服务器资源调整)、connectionTimeout(连接超时时间,默认20秒,避免长时间占用资源)、enableLookups="false"(禁用DNS查询,减少网络开销)。例如:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxConnections="10000" enableLookups="false" redirectPort="8443"/>
Executor元素定义线程池,避免多个Connector共享默认线程池的资源竞争。示例如下:<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" maxQueueSize="100" maxIdleTime="60000"/>
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
maxThreads:最大线程数(建议为CPU核心数的2-4倍,如4核CPU设置为800-1600);minSpareThreads:最小空闲线程数(保持一定数量的线程,避免频繁创建/销毁);maxQueueSize:等待队列大小(队列满后拒绝请求,防止内存溢出);maxIdleTime:线程空闲时间(超过则销毁,释放资源)。-Xms(初始堆)和-Xmx(最大堆),建议两者相等以避免频繁GC。例如:export CATALINA_OPTS="-Xms2g -Xmx4g"
-XX:+UseG1GC),它能在保证低延迟的同时提高吞吐量;若应用对延迟敏感,可添加-XX:MaxGCPauseMillis=200(设置最大GC停顿时间)。例如:export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
-XX:MetaspaceSize(初始元空间)和-XX:MaxMetaspaceSize(最大元空间),避免元空间溢出(常见于大量使用第三方库的应用)。例如:export CATALINA_OPTS="$CATALINA_OPTS -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g"
compression="on"开启gzip压缩,设置compressionMinSize(触发压缩的最小响应大小,如1KB)和compressableMimeType(需要压缩的MIME类型,如文本、JSON)。示例如下:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" compression="on" compressionMinSize="1024" compressableMimeType="text/html,text/xml,text/css,text/javascript,application/json" redirectPort="8443"/>
server.xml中注释或删除AJP连接器,减少资源占用:<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> -->
/etc/security/limits.conf,添加以下内容:* soft nofile 65535
* hard nofile 65535
重启系统或重新登录生效。/etc/sysctl.conf,调整以下参数以提升网络性能:net.core.somaxconn = 1024 # 增加监听端口的最大连接队列长度
net.ipv4.tcp_max_syn_backlog = 8192 # 增加SYN队列长度
net.ipv4.tcp_tw_reuse = 1 # 允许复用TIME_WAIT状态的连接
执行sysctl -p使配置生效。catalina.sh中启用-Dcom.sun.management.jmxremote)、VisualVM、Prometheus+Grafana等工具监控Tomcat的线程池使用率、内存消耗、GC频率等指标,根据监控结果动态调整参数(如增加maxThreads或优化GC策略)。以上技巧需根据Debian服务器的硬件配置(CPU、内存)、应用类型(高并发/低延迟、静态/动态内容)及实际负载情况进行调整,建议在测试环境验证后再应用于生产环境。