在 Debian 上“定位 Tomcat 慢日志”通常分为 三步:
1️⃣ 确认 Tomcat 是否开启了访问日志(access log)
2️⃣ 配置或分析慢请求日志(Tomcat 本身不直接叫“慢日志”,需要靠 AccessLog / Valve / 应用日志)
3️⃣ 结合系统与应用层定位“慢”的原因
下面按实战方式来说明。
Debian 下 Tomcat 常见路径:
/var/lib/tomcat9/ # Tomcat 主目录(版本可能是 8/9/10)
/var/log/tomcat9/ # 日志目录
/etc/tomcat9/ # 配置文件
访问日志一般在:
/var/log/tomcat9/access.log
如果没有,说明没启用 AccessLogValve。
编辑 server.xml:
sudo nano /etc/tomcat9/server.xml
找到 <Host> 节点,确保有:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="access"
suffix=".log"
pattern="%h %l %u %t "%r" %s %b %D" />
重点说明:
%D:请求处理时间(毫秒) ← 用来定位“慢请求”%T:秒(精度低,不推荐)重启 Tomcat:
sudo systemctl restart tomcat9
awk '$NF > 1000 {print}' /var/log/tomcat9/access.log
或:
grep -E '" [0-9]{3} [0-9]+ [1-9][0-9]{3}' /var/log/tomcat9/access.log
awk '{print $7, $NF}' access.log | sort | uniq -c
其中:
$7 是 URL$NF 是耗时(ms)/var/log/tomcat9/catalina.out
常见慢原因:
实时看:
tail -f /var/log/tomcat9/catalina.out
编辑:
/etc/tomcat9/server.xml
<Connector port="8080"
maxThreads="200"
acceptCount="100"
connectionTimeout="20000" />
如果:
查看线程数:
ps -eLf | grep java | wc -l
SlowQueryValve(Tomcat 自带)<Valve className="org.apache.catalina.valves.SlowQueryValve"
threshold="1000" />
top
iostat -x 1
ss -tanp | grep 8080
jstat -gcutil <pid> 1000
✅ 慢日志第一步:开启 access log + %D
✅ 第二步:过滤 >1000ms 请求
✅ 第三步:结合 catalina.out + 线程 + GC
✅ 第四步:定位是 DB / 外部接口 / 代码 / 并发
如果你愿意,可以告诉我:
我可以直接帮你写 最优 server.xml 配置。