You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Tomcat服务器高CPU内存占用时日志捕获工具推荐

Tomcat峰值时段日志捕获工具推荐(针对CPU/内存高负载场景)

以下是几个适合Linux环境下,针对Tomcat峰值负载时捕获日志的实用工具和方案:

1. 系统自带logrotate + 自定义负载触发脚本

利用Linux原生的logrotate工具,结合简单的shell脚本实现负载阈值触发式日志留存:

  • 先配置Tomcat的logrotate规则(比如在/etc/logrotate.d/tomcat),设置日志大小、保留份数;
  • 编写监控脚本,定时用top、free或mpstat检查CPU/内存使用率,当超过预设阈值(比如CPU>85%、内存>90%)时,执行logrotate -f /etc/logrotate.d/tomcat强制轮转日志,同时将当前的catalina.out、localhost.log等复制到专门的峰值日志目录(比如/var/log/tomcat/peak/)并标记时间戳。
  • 示例脚本片段:
    #!/bin/bash
    CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
    if (( $(echo "$CPU_USAGE > 85" | bc -l) )); then
        mkdir -p /var/log/tomcat/peak
        cp /var/log/tomcat/catalina.out /var/log/tomcat/peak/catalina_peak_$(date +%Y%m%d%H%M).log
        logrotate -f /etc/logrotate.d/tomcat
    fi
    
  • 用crontab配合循环实现每10秒执行一次脚本,确保不会错过峰值。

2. Tomcat Access Log Valve + 动态日志级别调整

通过Tomcat自身配置,结合系统工具实现峰值时的详细日志捕获:

  • 修改conf/server.xml中的AccessLogValve,默认记录基础请求信息,峰值时临时调整为记录更详细的参数(比如queryString、remoteUser);
  • 利用Tomcat的JMX接口或脚本,在负载过高时动态修改日志级别:比如将org.apache.catalina包的日志级别从INFO改为DEBUG,捕获更多内部处理细节,峰值过后再改回原级别;
  • 配合tail命令实时导出峰值日志:tail -n 20000 -f /var/log/tomcat/catalina.out > /var/log/tomcat/peak/debug_peak_$(date +%Y%m%d%H%M).log,触发阈值后后台执行,负载回落再停止。

3. JVM工具+日志关联(针对Java应用性能瓶颈)

Tomcat是Java容器,结合JVM工具可将线程/堆状态和应用日志关联分析,精准定位问题:

  • 负载峰值出现时,用jstack捕获Tomcat进程的线程栈:jstack $(pgrep java) > /var/log/tomcat/peak/thread_dump_$(date +%Y%m%d%H%M).txt,找到阻塞或CPU占用高的线程,对应日志中的请求ID;
  • 用jstat监控JVM内存和GC状态:jstat -gcutil $(pgrep java) 1000 10 > /var/log/tomcat/peak/gc_stats_$(date +%Y%m%d%H%M).txt,结合应用日志排查内存泄漏或GC频繁导致的高负载;
  • 这些工具为JDK自带,无需额外安装,适合快速排查。

4. sysdig轻量系统监控工具

sysdig是轻量系统级监控工具,可实时捕获Tomcat进程的系统调用、文件IO等,与应用日志联动:

  • 安装后,峰值时执行:sysdig -p "%evt.time %proc.name %evt.args" proc.name=java > /var/log/tomcat/peak/sysdig_peak.log,查看Java进程的所有系统操作,结合Tomcat日志判断是否存在IO阻塞、资源竞争等问题;
  • 优点是开销小,不会给高负载服务器增加额外压力。

实践建议

  • 提前规划日志存储路径,确保峰值日志有足够磁盘空间;
  • 捕获的日志要标记时间戳,方便后续按时间线排查;
  • 峰值过后及时停止详细日志捕获,避免占用过多资源;
  • 结合监控工具的告警,自动触发日志捕获脚本。

内容的提问来源于stack exchange,提问作者Rajesh Gandhavarapu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:25:14