tomcat -监控分析调优 -02
Tomcat性能测试中的监控分析与调优
一、Tomcat监控分析调优的核心作用
-
性能瓶颈定位:识别系统性能瓶颈(CPU、内存、I/O、网络等)
-
资源利用率优化:确保服务器资源得到合理利用
-
稳定性保障:预防内存泄漏、线程死锁等问题
-
容量规划:为系统扩容提供数据支持
-
配置验证:验证当前配置是否达到最优效果
二、Tomcat监控实施方式
1. 监控维度与工具
| 监控维度 | 监控指标 | 常用工具 |
|---|---|---|
| JVM监控 | 堆内存、非堆内存、GC次数/时间 | JVisualVM、JConsole、GC日志分析 |
| 线程监控 | 线程数、活跃线程、阻塞线程 | JStack、Arthas、Tomcat Manager |
| 连接器监控 | 请求数、处理时间、错误率 | JMX、Prometheus+Grafana |
| 会话监控 | 会话数、创建/过期率、大小 | Tomcat Manager、自定义监控 |
| 系统资源 | CPU、内存、磁盘I/O、网络流量 | top、vmstat、sar、nmon |
2. 具体监控实施方法
A. 内置监控接口
-
Tomcat Manager:通过
/manager/status查看基础状态 -
JMX监控:
# 启动时添加JMX参数 JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"使用JConsole或VisualVM连接
操作步骤:
1、服务器安装tomcat工具,上传包apache-tomcat-9.0.19.tar.gz ,解压 tar -zxvf apache-tomcat-9.0.19.tar.gz
2、进入bin 目录,启动,startup.sh
3、可以使用jps -l 查看进程
[root@bin]# jps -l
2305 sun.tools.jps.Jps
2260 org.apache.catalina.startup.Bootstra
4、如果 conf server.xml 端口没有修改,默认8080
5、启动后,浏览器输入http://ip:8080/manager/status 就可以进行访问了

6、如果要查看server status ,如果配置gui页面,账户密码
http://ip:8080/ 访问页面,

6.1 在conf/tomcat-users.xml中添加角色和用户
<role rolename="manager-status"/>
<user username="statusUser" password="s3cret" roles="manager-status"/>
6.2 /webapps/manager/META-INF/context.xml
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> 改为 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
6.3 /webapps/host-manager\META-INF\context.xml
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> 改为 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
6.4 重新启动tomcat 服务,访问http://ip:8080/ 访问页面, 点击【server status】 ,输入上面的账户密码,跳转到 http://ip:8080/manager/status ,入下页面,可以查看服务器信息,
Connector

注意点:
Tomcat自带的Status监控页面(/manager/status)只在测试环境监控,在生产环境中通常不被推荐使用,主要原因包括:
1. 安全风险
-
敏感信息暴露:显示服务器状态、会话信息、JVM内存等敏感数据
-
默认认证薄弱:基础认证容易遭受暴力破解
-
潜在攻击入口:可能成为攻击者收集系统信息的突破口
2. 性能影响
-
资源消耗:实时收集状态信息会增加服务器负担
-
非异步处理:同步请求可能在高负载时影响正常业务
3. 功能局限
-
监控粒度粗:缺乏细粒度的性能指标
-
无历史数据:无法查看趋势变化
-
告警缺失:不具备阈值告警功能
二、Status监控的配置方式
1. 基础启用配置
在conf/tomcat-users.xml中添加角色和用户:
---------------------------------------
B. 日志监控
-
配置
conf/logging.properties启用详细日志 -
分析
logs/catalina.out和访问日志
C. APM工具集成
-
Prometheus+Grafana:
<!-- 添加metrics暴露 --> <Listener className="io.prometheus.client.tomcat.TomcatMetricsCollector"/> -
SkyWalking/Arthas:分布式追踪和深度诊断
三、Tomcat关键调优点及场景
1. JVM调优 (重点是JVM参数配置)
调优点:
-
堆内存设置(Xms/Xmx)
-
新生代/老年代比例(-XX:NewRatio)
-
GC算法选择(G1/CMS/ZGC)
-
元空间大小(-XX:MetaspaceSize)
适用场景:
-
频繁Full GC → 调整堆大小或改用G1 GC
-
请求延迟波动大 → 优化新生代比例
-
元空间OOM → 增加MetaspaceSize
示例配置:
JAVA_OPTS="-Xms4G -Xmx4G -XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:MetaspaceSize=256M
-XX:MaxMetaspaceSize=512M"
catalina.sh jvm 参数配置示例: JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$CATALINA_HOME/logs/gc.log"
2. 连接器调优
调优点:
-
maxThreads(最大工作线程)
-
acceptCount(等待队列)
-
connectionTimeout(连接超时)
-
enableLookups(DNS查询)
适用场景:
-
高并发请求 → 增加maxThreads(不超过CPU核数×200)
-
大量请求排队 → 调整acceptCount
-
长连接服务 → 增大connectionTimeout
配置示例:
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
maxThreads="500"
minSpareThreads="50"
acceptCount="300"
connectionTimeout="20000"
enableLookups="false"
compression="on"/>
四、典型场景调优方案
场景1:高并发秒杀系统
问题特征:
-
瞬时超高并发
-
短生命周期请求
-
高失败率
调优方案:
-
使用NIO2协议:
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
-
激进线程配置:
maxThreads="800" acceptCount="1000"
-
快速失败策略:
connectionTimeout="5000" keepAliveTimeout="3000"
-
JVM优化:
-XX:+UseZGC -Xmx8G -XX:MaxGCPauseMillis=10
五、性能测试调优流程
-
基准测试:确定系统当前性能基线
-
压力测试:逐步增加负载观察性能变化
-
稳定性测试:长时间运行检测内存泄漏
-
瓶颈分析:使用工具定位性能瓶颈
-
调优实施:针对性调整配置参数
-
验证测试:确认调优效果
-
监控上线:生产环境持续监控
六、高级调优技巧
-
Linux内核优化:
# 增加文件描述符限制 ulimit -n 100000 # TCP参数优化 echo 'net.ipv4.tcp_tw_reuse=1' >> /etc/sysctl.conf -
APR/native调优:
<Connector protocol="org.apache.coyote.http11.Http11AprProtocol" sendfile="true" sendfileSize="8192"/> -
类加载优化:
-XX:+TieredCompilation -XX:ReservedCodeCacheSize=256M
通过系统化的监控分析和针对性调优,Tomcat可以支撑从几百到数万QPS的不同业务场景。关键是根据实际业务特征选择适当的调优策略,并持续监控验证效果。

浙公网安备 33010602011771号