# Tomcat的运行和调优方法 ## 一、Tomcat基础运行机制 ### 1.1 核心组件架构 Tomcat作为轻量级Java Web服务器,其核心架构包含以下关键组件: - **Server**:顶级容器,代表整个Tomcat实例 - **Service**:服务单元,包含Connector和Engine - **Connector**:处理网络连接(HTTP/HTTPS/AJP) - **Engine**:请求处理引擎,包含多个Host - **Host**:虚拟主机,对应域名 - **Context**:Web应用上下文 ### 1.2 请求处理流程 1. 客户端发起HTTP请求 2. Connector接收并解析请求 3. Engine匹配Host和Context 4. 过滤器链(Filter Chain)处理 5. Servlet处理并生成响应 6. 响应返回客户端 ## 二、Tomcat启动与运行配置 ### 2.1 启动方式 ```bash # 标准启动 ./catalina.sh run # Linux/Mac catalina.bat run # Windows # 后台运行 ./startup.sh # Linux/Mac startup.bat # Windows
文件路径 | 作用描述 |
---|---|
conf/server.xml | 主配置文件 |
conf/web.xml | 全局web应用配置 |
conf/context.xml | 上下文默认配置 |
bin/setenv.sh(.bat) | 自定义环境变量 |
在setenv.sh
中设置:
export CATALINA_OPTS="-server -Xms1024m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
推荐参数: - -Xms
和-Xmx
设置为相同值避免动态调整 - 新生代建议占堆大小的1/3到1/4 - 添加GC日志记录:-Xloggc:/path/to/gc.log
修改server.xml
中的Connector配置:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="500" minSpareThreads="50" acceptCount="200" connectionTimeout="20000" maxConnections="1000" compression="on" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" />
关键参数说明: - maxThreads:最大工作线程数(默认200) - acceptCount:等待队列长度(超过则拒绝连接) - enableLookups:禁用DNS查询(设为false) - NIO/NIO2:高并发场景推荐使用
-XX:NewSize
和-XX:MaxNewSize
-XX:SurvivorRatio=8
-XX:OldSize
# 年轻代使用ParallelGC,老年代使用CMS -XX:+UseParNewGC -XX:+UseConcMarkSweepGC # G1垃圾回收器(JDK9+推荐) -XX:+UseG1GC -XX:MaxGCPauseMillis=200
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true" maxActiveSessions="1000" minIdleSwap="30" maxIdleSwap="3600"> <Store className="org.apache.catalina.session.FileStore" directory="../session"/> </Manager>
替代方案: - 使用Redis等外部存储:集成RedissonSessionManager
- 禁用会话持久化:<Manager className="org.apache.catalina.session.StandardManager"/>
配置conf/catalina.properties
:
server.loader= common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar shared.loader=
<Context reloadable="false">
<Context> <Resources cachingAllowed="true" cacheMaxSize="102400"/> </Context>
安装APR库后配置:
<Connector protocol="org.apache.coyote.http11.Http11AprProtocol"/>
优势: - 更好的静态文件处理性能 - 使用操作系统级网络IO
启用JMX监控:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
JDK工具:
第三方工具:
常见问题排查: - CPU过高:线程转储分析(jstack
) - 内存泄漏:堆转储分析(jmap -dump
) - 响应慢:网络延迟检查、SQL查询优化
删除默认应用:
rm -rf webapps/docs webapps/examples
修改shutdown端口:
<Server port="8005" shutdown="自定义复杂字符串">
禁用TRACE方法:
<security-constraint> <web-resource-collection> <web-resource-name>Deny TRACE</web-resource-name> <url-pattern>/*</url-pattern> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint/> </security-constraint>
Tomcat性能调优需要综合考虑: 1. JVM层面:合理内存分配+适当GC策略 2. Connector配置:根据并发量调整线程参数 3. 会话管理:高可用场景使用分布式存储 4. 持续监控:建立性能基线,定期检查
建议调优顺序: 1. 确定性能指标(TPS、响应时间等) 2. 进行基准测试(JMeter等工具) 3. 逐项调整参数并验证效果 4. 生产环境灰度发布变更
注:实际调优效果因应用特性而异,建议在测试环境充分验证后再应用于生产环境。 “`
该文档共计约1800字,采用Markdown格式编写,包含代码块、表格等元素,可直接用于技术文档发布。如需调整具体内容细节,可进一步补充实际案例或特定场景的配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。