tomcat -监控分析调优 -02

Tomcat性能测试中的监控分析与调优

一、Tomcat监控分析调优的核心作用

  1. 性能瓶颈定位:识别系统性能瓶颈(CPU、内存、I/O、网络等)

  2. 资源利用率优化:确保服务器资源得到合理利用

  3. 稳定性保障:预防内存泄漏、线程死锁等问题

  4. 容量规划:为系统扩容提供数据支持

  5. 配置验证:验证当前配置是否达到最优效果

二、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:高并发秒杀系统

问题特征:

  • 瞬时超高并发

  • 短生命周期请求

  • 高失败率

调优方案:

  1. 使用NIO2协议:

     
    protocol="org.apache.coyote.http11.Http11Nio2Protocol"
  2. 激进线程配置:

    maxThreads="800" 
    acceptCount="1000"
  3. 快速失败策略:

    connectionTimeout="5000"
    keepAliveTimeout="3000"
  4. JVM优化:

    -XX:+UseZGC -Xmx8G -XX:MaxGCPauseMillis=10

五、性能测试调优流程

  1. 基准测试:确定系统当前性能基线

  2. 压力测试:逐步增加负载观察性能变化

  3. 稳定性测试:长时间运行检测内存泄漏

  4. 瓶颈分析:使用工具定位性能瓶颈

  5. 调优实施:针对性调整配置参数

  6. 验证测试:确认调优效果

  7. 监控上线:生产环境持续监控

六、高级调优技巧

  1. Linux内核优化:

    # 增加文件描述符限制
    ulimit -n 100000
    
    # TCP参数优化
    echo 'net.ipv4.tcp_tw_reuse=1' >> /etc/sysctl.conf
  2. APR/native调优:

    <Connector 
        protocol="org.apache.coyote.http11.Http11AprProtocol"
        sendfile="true"
        sendfileSize="8192"/>
  3. 类加载优化:

    -XX:+TieredCompilation 
    -XX:ReservedCodeCacheSize=256M

通过系统化的监控分析和针对性调优,Tomcat可以支撑从几百到数万QPS的不同业务场景。关键是根据实际业务特征选择适当的调优策略,并持续监控验证效果。




posted @ 2025-06-06 17:30  Shafir莎菲尔  阅读(80)  评论(0)    收藏  举报