通过日志监控Ubuntu Tomcat性能的方法
实时监控Tomcat日志是快速发现性能问题的第一步,常用命令工具如下:
tail -f /path/to/tomcat/logs/catalina.out
(-f
选项表示“follow”,持续显示日志新增内容),可快速定位错误信息(如ERROR
、Exception
关键字)或请求延迟异常。sudo apt-get install multitail
后,通过multitail /path/to/tomcat/logs/catalina.out /path/to/tomcat/logs/localhost.*.log
同时监控多个日志文件(如catalina.out
主日志和localhost
访问日志),支持分割视图,提升多维度监控效率。less -F /path/to/tomcat/logs/catalina.out
(-F
选项表示“follow”),适合需要滚动查看历史日志的场景,按Ctrl+C
退出跟随模式。Tomcat日志会定期轮转(如按天或按大小切割),需确保监控工具能捕获新日志文件:
-f
为-F
(大写),可自动跟踪新创建的日志文件(如catalina.out.2025-09-22
),无需重启监控命令。基础命令仅能查看实时日志,若需长期存储、分析和可视化,需借助专业工具:
catalina.out
、access_log
),存储到Elasticsearch,再用Kibana创建仪表盘,展示请求量、响应时间、错误率等指标的趋势图,支持自定义查询和告警。日志中蕴含大量性能线索,需重点关注以下指标:
access_log
,路径通常为/var/log/tomcatX/access_log
)中的%D
参数(请求处理时间,单位:微秒),使用awk
命令统计平均响应时间(如awk '{print $NF/1000000}' access_log | awk '{sum+=$1; count++} END {print "Average:", sum/count}'
),识别慢请求(如超过1秒的请求)。grep "ERROR"
或grep "Exception"
过滤catalina.out
日志,统计错误数量(如grep "ERROR" catalina.out | wc -l
),快速定位应用层问题(如数据库连接失败、空指针异常)。catalina.sh
中添加-Xloggc:/path/to/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps
),使用GCViewer
工具分析GC频率和持续时间(如Full GC次数过多或耗时过长),判断JVM内存是否充足。避免日志文件过大占用磁盘空间,影响Tomcat性能:
/etc/logrotate.d/tomcat
文件,配置日志轮转规则(如按天轮转、压缩旧日志、保留30天):/path/to/tomcat/logs/*.log {
daily
rotate 30
compress
missingok
notifempty
copytruncate
}
该配置会每天切割日志文件,保留最近30天的压缩日志,并清空原日志文件(不影响Tomcat运行)。日志监控可发现问题,但无法实时获取Tomcat内部状态(如线程池、JVM内存),需结合JMX补充:
conf/server.xml
,添加<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002"/>
,重启Tomcat。jconsole
或visualvm
工具,输入localhost:10001
连接,查看线程池(currentThreadsBusy
/maxThreads
)、JVM内存(heapMemoryUsage
)、GC情况等实时指标,快速定位性能瓶颈。