Debian环境下Tomcat性能调优指南
连接器是Tomcat处理HTTP请求的核心组件,选择高效的协议并调整其参数能显著提升性能。
server.xml中配置:<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 certificateKeystoreFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
maxConnections(最大连接数,默认10000,可根据服务器资源调整)、acceptCount(请求队列长度,默认100,队列过长会导致请求被拒绝)和connectionTimeout(连接超时时间,默认20秒,可根据业务调整)。线程池负责处理并发请求,合理的参数设置能平衡资源利用率与响应速度。
server.xml中通过<Executor>标签配置线程池,关键参数包括:
maxThreads:最大线程数(建议设置为CPU核心数的2-4倍,如8核CPU设置为16-32);minSpareThreads:最小空闲线程数(建议设置为CPU核心数的1-2倍,保持线程池预热);maxQueueSize:请求队列长度(建议设置为maxThreads的1.5-2倍,避免无界队列导致内存溢出)。<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="200" minSpareThreads="50" maxQueueSize="100" />
<Connector>标签中通过executor属性引用上述线程池,替代默认的线程池配置。JVM参数直接影响Tomcat的内存使用和垃圾回收效率,需根据应用特点调整。
-Xms(初始堆)和-Xmx(最大堆)设置相同值(如-Xms1024m -Xmx2048m),避免堆内存动态扩展带来的性能开销。-XX:MaxMetaspaceSize(如-XX:MaxMetaspaceSize=256m),防止元空间溢出。-XX:+UseG1GC启用,并设置-XX:MaxGCPauseMillis(最大GC暂停时间,默认200ms,可根据需求调整)。catalina.sh(或setenv.sh)中添加:export JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
Linux内核参数的调整能提升Tomcat处理高并发的能力。
sysctl命令修改以下参数(永久生效需写入/etc/sysctl.conf):
net.ipv4.tcp_tw_reuse=1:允许TCP连接复用,减少TIME_WAIT状态的连接;net.core.somaxconn=4096:增加系统允许的最大并发连接数(默认128,需根据服务器资源调整)。/etc/security/limits.conf,添加以下内容(针对Tomcat用户):tomcat soft nofile 65535
tomcat hard nofile 65535
缓存能减少重复计算和磁盘IO,提升响应速度。
server.xml的<Connector>标签中添加compression="on",并指定压缩的MIME类型(如compressableMimeType="text/html,text/xml,text/css,application/javascript"),减少网络传输数据量。Cache-Control)。关闭Tomcat的非必要功能,减少资源消耗。
server.xml中的AJP连接器配置(默认端口8009)。web.xml中设置autoDeploy="false"和deployOnStartup="false",避免Tomcat自动扫描和部署应用(需手动部署)。server.xml的<Connector>标签中添加enableLookups="false",避免Tomcat对客户端IP进行DNS反向解析(降低延迟)。通过监控工具识别性能瓶颈,针对性调整配置。
Manager应用(/manager/html)可查看应用的性能指标(如请求数、响应时间、内存使用);JMX(Java Management Extensions)可通过JConsole、VisualVM监控线程池、内存、GC等详细信息。maxThreads或优化JVM堆大小)。