Tomcat 应用部署、性能调优与安全加固
2025/9/17大约 3 分钟
Tomcat 应用部署、性能调优与安全加固
前置知识
建议你已熟悉 Tomcat 目录结构与常用管理。
目录
应用部署方式
1. 自动部署(推荐)
- 将 war 包或应用文件夹放入
webapps/
目录,Tomcat 会自动解压并部署 - 访问路径:
http://localhost:8080/应用名/
2. 手动部署
- 编辑
conf/server.xml
,为应用单独配置<Context>
- 支持指定 docBase、路径、参数等
server.xml
手动部署示例
<Host name="localhost" appBase="webapps">
<Context path="/myapp" docBase="/data/webapps/myapp" reloadable="true"/>
</Host>
3. 热部署与重载
- 修改 war 包或文件夹,Tomcat 会自动检测并重载(
reloadable="true"
) - 生产环境建议关闭自动重载,提升稳定性
JVM 与内存调优
- 修改
bin/catalina.sh
(Linux)或bin/catalina.bat
(Windows) - 设置 JVM 启动参数,优化内存与垃圾回收
常用 JVM 参数
# 设置最大/初始堆内存、永久代、GC 日志
JAVA_OPTS="-Xms512m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=512m -XX:+PrintGCDetails -Xloggc:logs/gc.log"
- 建议根据服务器内存合理分配 Xmx/Xms
- 生产环境建议开启 GC 日志,便于排查内存泄漏
连接数与线程池优化
- 修改
conf/server.xml
中<Connector>
节点 - 常用参数:
maxThreads
、minSpareThreads
、maxConnections
、acceptCount
Connector 性能参数注释
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="200" <!-- 最大工作线程数 -->
minSpareThreads="25" <!-- 最小空闲线程数 -->
maxConnections="10000" <!-- 最大连接数 -->
acceptCount="1000" <!-- 排队请求数 -->
URIEncoding="UTF-8"/>
- 增大 maxThreads/maxConnections 可提升并发能力,但受限于硬件
常用性能参数说明
参数 | 作用 | 建议值 |
---|---|---|
Xms/Xmx | 堆内存初始/最大 | 512m~4g |
maxThreads | 最大工作线程数 | 200~1000 |
maxConnections | 最大连接数 | 1000~10000 |
acceptCount | 排队请求数 | 100~1000 |
URIEncoding | 请求编码 | UTF-8 |
HTTPS 配置与证书部署
- 生成或购买 SSL 证书(JKS/PFX)
- 修改
conf/server.xml
,配置 HTTPS Connector
server.xml
HTTPS 配置片段
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
scheme="https" secure="true"
keystoreFile="conf/keystore.jks" keystorePass="yourpassword"
clientAuth="false" sslProtocol="TLS"/>
- 访问
https://localhost:8443/
验证配置
安全加固建议
- 删除/重命名管理后台(manager、host-manager)应用
- conf/web.xml 禁用不必要的默认 Servlet
- conf/server.xml 关闭 AJP 端口(8009)或限制 IP
- 生产环境关闭自动部署、自动重载
- 合理配置 CORS、Session 超时、Cookie HttpOnly/Secure
- 定期升级 Tomcat 版本,修复安全漏洞
常见问题与小结
常见问题
- war 包无法自动部署:检查 war 包结构、web.xml、Tomcat 日志
- 内存溢出/GC 频繁:调整 Xmx/Xms、排查内存泄漏
- 并发性能瓶颈:增大 maxThreads/maxConnections,优化应用代码
- HTTPS 配置失败:检查证书路径、密码、端口占用
- 安全漏洞提示:及时升级 Tomcat,关闭不必要端口
- 推荐自动部署,生产环境建议关闭热部署
- JVM、线程池、连接数等参数需结合实际压力测试调整
- HTTPS 是生产环境必备,证书建议正规渠道获取
- 安全加固与定期升级同等重要
- 后续将介绍 Tomcat 常见问题与实用技巧
本文为 Tomcat 系列教程第三篇,下一篇将介绍常见问题与实用技巧,敬请期待!