debian

Tomcat日志中的慢查询怎么定位

小樊
45
2026-01-03 01:28:54
栏目: 智能运维

定位 Tomcat 日志中的慢查询

一 明确日志来源与含义

二 命令行快速定位

三 使用可视化与聚合分析

四 常见排查路径与优化建议

五 一键脚本示例

#!/usr/bin/env bash
set -euo pipefail

LOG="${1:-catalina.out}"
THRESHOLD_MS="${2:-800}"

if [[ ! -f "$LOG" ]]; then
  echo "Usage: $0 <logfile> [threshold_ms]"
  exit 1
fi

echo "=== QTime > ${THRESHOLD_MS}ms in $LOG ==="

# 兼容 QTime=123 或 QTime="123"(含引号和空格)等常见格式
grep -E 'QTime[=:][[:space:]]*"?[0-9]+' "$LOG" | while IFS= read -r line; do
  # 提取数值(兼容 ms 与 s 两种记录方式)
  ms=$(echo "$line" | sed -E 's/.*QTime[=:][[:space:]]*"?([0-9]+(\.[0-9]+)?).*/\1/')
  # 若原始日志以秒为单位(如 0.83),则换算为毫秒
  if awk "BEGIN{exit !($ms < 100)}"; then
    ms=$(awk "BEGIN{printf \"%.0f\", $ms * 1000}")
  fi
  if awk "BEGIN{exit !($ms > $THRESHOLD_MS)}"; then
    echo "$ms ms -> $line"
  fi
done

0
看了该问题的人还看了