Tomcat配置文件优化指南
Tomcat的性能优化核心在于配置文件的合理调整,主要包括server.xml(连接器、线程池)、web.xml(功能禁用)、context.xml(缓存)等文件。以下是具体优化措施:
连接器是Tomcat处理HTTP请求的核心组件,其参数直接影响并发处理能力。需重点调整以下参数:
org.apache.coyote.http11.Http11NioProtocol,适用于大多数高并发场景)或NIO2(org.apache.coyote.http11.Http11Nio2Protocol,更高性能);若需支持HTTP/2,可使用org.apache.coyote.http2.Http2Protocol(Tomcat 8.5+支持)。compressableMimeType="text/html,text/xml,text/javascript,text/css,application/json")和最小压缩大小(如compressionMinSize="2048",大于2KB才压缩)。线程池用于管理并发线程,合理配置可提升资源利用率。在server.xml中定义线程池,并关联到连接器:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500" minSpareThreads="50"
maxQueueSize="100" keepAliveTime="60000"/>
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443"/>
减少Tomcat的冗余功能,降低资源消耗:
web.xml中设置autoDeploy="false"和deployOnStartup="false",避免Tomcat自动扫描并部署应用(需手动部署)。server.xml中的AJP连接器(<Connector port="8009" protocol="AJP/1.3"/>),减少不必要的端口监听。context.xml中关闭JNDI功能(<Context antiJndiLookup="true">)。缓存静态资源(如HTML、CSS、JS),减少磁盘IO和重复计算:
context.xml中配置Resources缓存,设置缓存大小和过期时间:<Context>
<Resources cachingAllowed="true" cacheMaxSize="102400"
cacheObjectMaxSize="51200" cacheTTL="3600"/>
</Context>
(cacheMaxSize:缓存最大大小(字节),cacheObjectMaxSize:单个对象最大大小,cacheTTL:缓存过期时间(秒))。Tomcat运行在JVM上,合理的JVM参数可提升性能和稳定性:
-Xms(初始堆内存)和-Xmx(最大堆内存),建议设置为物理内存的80%(如8G内存设为-Xms4g -Xmx4g),并设置-Xmn(年轻代大小)为-Xmx的1/4(如-Xmn1g),避免频繁Full GC。-XX:MetaspaceSize(初始大小,如128m)和-XX:MaxMetaspaceSize(最大大小,如256m),避免元空间溢出。-XX:+UseG1GC),并设置最大GC暂停时间(如-XX:MaxGCPauseMillis=200,目标不超过200毫秒);小内存堆可使用Parallel GC(-XX:+UseParallelGC)。-XX:+UseStringDeduplication(字符串去重,减少内存占用)、-XX:+HeapDumpOnOutOfMemoryError(内存溢出时生成堆转储文件,便于分析)。/etc/security/limits.conf,增加系统进程数和文件句柄数(如* soft noproc 65535、* hard noproc 65535、* soft nofile 65535、* hard nofile 65535);修改/etc/sysctl.conf,优化TCP参数(如net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_max_tw_buckets=5000,减少TIME_WAIT状态连接)。web.xml中设置listings="false",防止用户直接访问目录结构(避免敏感信息泄露)。logging.properties中的日志级别(如org.apache.catalina.level = INFO),减少不必要的日志输出(降低IO开销)。