ubuntu

Tomcat日志中的慢查询如何解决

小樊
31
2025-12-17 22:56:10
栏目: 智能运维

定位与根因概览

快速定位步骤

  1. 在数据库侧开启慢查询日志(以 MySQL 为例)
    • 动态开启(重启失效):
      • SET GLOBAL slow_query_log = ‘ON’;
      • SET GLOBAL long_query_time = 2;
    • 永久生效(/etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf):
      • [mysqld]
        • slow_query_log = 1
        • slow_query_log_file = /var/log/mysql/slow_query.log
        • long_query_time = 2
    • 重启数据库后生效。以上阈值与路径可按业务调整。
  2. 分析慢查询
    • 使用 mysqldumpslow 找出最慢的 SQL:
      • mysqldumpslow -s t -t 10 /var/log/mysql/slow_query.log(按时间取前 10 条)
  3. 在 Tomcat 侧定位对应请求
    • 若日志含 QTime(常见于 Solr 请求耗时),可用命令行快速筛查:
      • grep ‘QTime’ /path/to/tomcat/logs/*.log
      • 筛选 QTime 大于阈值的记录(示例阈值 800ms):
        • cat /var/log/tomcat*/catalina.out | grep ‘QTime’ | awk -F ‘QTime’ ‘{if (NF>1 && $2 ~ /^[0-9]+/ && $2 > 800) print $0}’
      • 按时间段导出日志便于分析:
        • sed -n ‘/2025-03-07/,/2025-03-08/p’ /var/log/tomcat*/catalina.out > today.log
    • 复杂场景建议接入 ELK/Graylog 做集中检索与可视化分析。

数据库层优化要点

Tomcat 与连接池优化

监控与持续优化

0
看了该问题的人还看了