1. 优化连接器配置
使用高性能连接器是提升Tomcat性能的基础。推荐采用NIO(非阻塞I/O)或NIO2连接器(适用于高并发场景),替代传统的BIO(阻塞I/O)。在server.xml中配置示例:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000" redirectPort="8443" />
若应用需支持HTTPS,可启用HTTP/2协议(Tomcat 8.5+支持),通过头部压缩、多路复用减少页面加载时间:
<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>
此外,合理设置连接超时(connectionTimeout,单位:毫秒)和最大连接数(maxConnections,默认10000,可根据服务器资源调整),避免无效连接占用资源。
2. 调整线程池参数
线程池是Tomcat处理并发请求的核心。通过<Executor>元素定义线程池,在server.xml中添加:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500" minSpareThreads="50" maxQueueSize="100" />
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" />
此配置可平衡并发处理能力和资源消耗。
3. 进行JVM调优
合理的JVM参数能显著提升Tomcat的稳定性和性能。关键参数包括:
-Xms(初始堆大小)和-Xmx(最大堆大小)指定,建议两者相等(避免堆扩容带来的性能波动),如-Xms2g -Xmx2g(根据服务器内存调整,建议不超过物理内存的70%);-XX:MetaspaceSize(初始元空间大小)和-XX:MaxMetaspaceSize(最大元空间大小),如-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m;-XX:+UseG1GC。catalina.sh或setenv.sh中添加):export JAVA_OPTS="-server -Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
调整后需通过jmap -heap <pid>(<pid>为Tomcat进程ID)验证配置是否生效。
4. 启用压缩功能
通过压缩响应内容减少网络传输量,提升页面加载速度。在server.xml的Connector中添加以下配置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443"
compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
on);5. 调整操作系统内核参数
优化Linux内核参数以提升TCP连接处理能力。编辑/etc/sysctl.conf文件,添加以下配置:
# 增加TCP连接队列长度(解决高并发下连接被拒绝的问题)
net.core.somaxconn = 1024
# 增加系统最大文件描述符数(Tomcat需处理大量连接)
fs.file-max = 65536
# 允许用户进程打开更多文件
ulimit -n 65536
保存后执行sysctl -p使配置生效。这些参数能避免因系统限制导致的性能瓶颈。
6. 禁用不必要的功能
server.xml中注释或删除AJP连接器配置,减少不必要的开销;enableLookups="false"(默认值),避免Tomcat对客户端IP进行DNS反向解析,减少网络延迟:<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443"
enableLookups="false" />
这些操作能简化Tomcat的处理流程,提升响应速度。
7. 使用反向代理优化
通过Nginx作为前端反向代理,可提升Tomcat的性能和安全性。Nginx处理静态资源(如图片、CSS、JS),Tomcat处理动态请求(如JSP、Servlet),分工明确。示例Nginx配置:
server {
listen 80;
server_name example.com;
location /static/ {
alias /var/www/static/;
expires 30d; # 静态资源缓存30天
}
location / {
proxy_pass http://localhost:8080; # 转发到Tomcat
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
此配置能减轻Tomcat的负载,提升整体性能。