温馨提示×

tomcat慢请求日志debian咋查

小樊
38
2026-09-28 11:10:57
栏目: 智能运维

在 Debian 上排查 Tomcat 慢请求(slow request),一般从 Tomcat 访问日志、线程状态、系统资源、连接配置 几个层面入手。下面按“从简单到深入”给你一套常用方法。


一、看 Tomcat 访问日志(最常用)

1. 找到访问日志

Tomcat 默认使用 AccessLogValve,日志一般在:

/var/log/tomcat9/access.log
# 或
/var/log/tomcat/access.log

(版本不同路径可能是 tomcat8 / tomcat9 / tomcat10)

2. 看响应时间

Tomcat 默认 不记录请求耗时,需要改配置。

编辑:

/etc/tomcat9/server.xml

找到 AccessLogValve:

<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:

systemctl restart tomcat9

然后查慢请求:

grep -E ' [0-9]{4,}$' /var/log/tomcat9/access.log
# 或
awk '{print $NF, $0}' access.log | sort -nr | head

二、开启 Tomcat 请求耗时日志(推荐)

使用 RequestDumperFilter(调试用)

不推荐生产长期使用。


三、看 Tomcat 线程是否卡住

1. 查看线程堆栈

# 找到 tomcat 进程
ps -ef | grep tomcat

# 生成线程栈
jstack <pid> > tomcat_threads.txt

重点看:

  • BLOCKED
  • WAITING
  • RUNNABLE 但长时间不退出

四、看系统层面(Debian)

1. CPU / 内存

top
htop
free -h

2. 磁盘 IO(慢请求常见原因)

iostat -x 1
iotop

3. 网络

netstat -antp | grep java
ss -antp

看是否有:

  • TIME_WAIT 很多
  • 连接长时间 ESTABLISHED

五、Tomcat 自身配置检查(慢请求常见坑)

1. 连接数太小

server.xml:

<Connector port="8080"
           maxThreads="200"
           acceptCount="100"
           connectionTimeout="20000" />

2. 反向代理超时(如 nginx)

proxy_read_timeout 60s;

六、快速定位思路总结

  1. 先查 access.log + %D
  2. 再 jstack 看线程卡哪
  3. 最后查 CPU / IO / 数据库

如果你愿意,可以告诉我:

  • Tomcat 版本
  • 是否前面有 nginx
  • 是接口慢还是静态资源慢

我可以直接帮你写 具体排查命令或 server.xml 配置。

0 踩