1. 收集Ubuntu Tomcat相关日志
Tomcat的性能日志主要分布在/var/log/tomcatX/目录(X为Tomcat实例编号,如tomcat9),核心日志文件包括:
/var/log/tomcatX/,记录HTTP请求的详细信息(如请求时间、方法、URL、响应状态码、处理时间);-Xloggc:/var/log/tomcatX/gc.log参数);2. 分析访问日志(定位请求性能瓶颈)
访问日志(localhost_access_log.*.txt)是分析请求处理性能的关键,可通过以下命令提取核心指标:
awk '{print $4}' /var/log/tomcatX/access_log | cut -d':' -f2 | sort | uniq -c | sort -nr(按分钟分组统计请求量,识别高峰时段);awk '$NF > 5' /var/log/tomcatX/access_log | awk '{print $1, $4, $7}'($NF为最后一列,即响应时间;$7为请求URL,定位慢请求路径);awk '{print $7}' /var/log/tomcatX/access_log | sort | uniq -c | sort -nr(统计URL访问频率,识别热点接口)。3. 分析错误日志(识别系统异常)
错误日志(catalina.out、localhost.*.log)中的异常信息能直接指向性能问题的根源,常用命令:
grep "OutOfMemoryError" /var/log/tomcatX/catalina.out(内存泄漏或堆内存不足的典型表现);grep "deadlock" /var/log/tomcatX/catalina.out(线程死锁会导致请求阻塞,响应时间飙升);grep "ERROR" /var/log/tomcatX/localhost.*.log(如Servlet异常、数据库连接失败,可能引发请求堆积)。4. 分析JVM日志(优化内存与GC性能)
GC日志(gc.log)反映了JVM内存管理情况,需使用工具可视化分析:
gc.log导入GCViewer(开源工具),查看GC频率、Full GC时间、堆内存回收率;若Full GC频繁或耗时过长(如超过200ms),需调整JVM参数(如增大堆内存-Xms/-Xmx、更换GC算法为G1);jstat -gcutil <Tomcat_PID> 1000 10(每1秒输出一次GC统计信息,共10次;关注O(Old区使用率)、YGC(Young GC次数)、FGC(Full GC次数),若O接近阈值(如80%)且FGC频繁,需扩容堆内存)。5. 分析线程转储(排查线程阻塞与死锁)
线程转储(Thread Dump)记录了Tomcat线程的实时状态,可用于分析线程阻塞、死锁等问题:
jstack <Tomcat_PID> > /path/to/thread_dump.log(需替换为实际PID,可通过ps -ef | grep tomcat获取);thread_dump.log,查看线程状态分布(如RUNNABLE、BLOCKED、WAITING);若存在大量BLOCKED线程(如等待数据库连接),需优化线程池配置(如增大maxThreads)或数据库连接池(如增大maxActive)。6. 使用日志分析工具(高效处理海量日志)
对于海量日志,手动分析效率低,可使用以下工具自动化处理:
log4j2.xml或logging.properties,添加JSON布局);filebeat.yml配置paths: ["/var/log/tomcatX/*.log"]);7. 结合监控工具(实时监控与告警)
日志分析与实时监控结合,能更早发现问题:
javamelody-core),配置web.xml(添加MonitoringFilter);http://localhost:8080/monitoring查看实时性能指标(如请求统计、JVM内存、数据库连接池)。