centos

centos tomcat日志中的慢查询

小樊
46
2025-08-12 19:45:10
栏目: 智能运维

一、慢查询日志定位与分析

  1. 日志文件路径
    CentOS下Tomcat日志默认存放在/var/log/tomcat//opt/tomcat/logs/目录,常见文件包括catalina.outlocalhost_access_log.*.txt
  2. 关键字段识别
    • 处理时间:日志中%DQTime字段表示请求处理时间(单位:毫秒),例如2326表示2.3秒。
    • SQL相关标识:若为数据库慢查询,日志可能包含SELECTJOIN等SQL关键词或数据库错误码。

二、常用分析方法

  1. 命令行快速筛选
    • 查找处理时间超过800毫秒的请求:
      grep 'QTime' /var/log/tomcat/catalina.out | awk -F 'QTime' '{if ($2 > 800) print $0}'
      
    • 统计慢查询次数:
      grep 'QTime' /var/log/tomcat/catalina.out | wc -l
      
  2. 工具化深度分析
    • ELK Stack:通过Logstash解析日志,Kibana可视化慢查询趋势,支持按接口、IP等维度筛选。
    • pt-query-digest:分析数据库慢查询日志(需配合MySQL),生成执行时间TOP10的SQL报告。

三、优化措施

  1. 数据库层面
    • 为高频查询字段添加索引,避免全表扫描。
    • 优化SQL语句,使用EXPLAIN分析执行计划,减少SELECT *和不必要的JOIN。
  2. Tomcat配置优化
    • 调整线程池参数(maxThreadsminSpareThreads)提升并发能力,修改server.xml<Connector>配置。
    • 启用HTTP压缩(compression="on")减少传输耗时。
  3. JVM与系统优化
    • 调整JVM堆内存(-Xms-Xmx),建议设置为物理内存的70%-80%。
    • 优化Linux内核参数,如net.ipv4.tcp_tw_reuse提升TCP连接复用。
  4. 架构层面
    • 对高并发接口实施读写分离或分库分表。
    • 引入缓存(如Redis)减少数据库直接访问。

四、监控与预防

参考来源

0
看了该问题的人还看了