温馨提示×

tomcat线程日志debian咋查

小樊
37
2026-09-28 11:17:59
栏目: 智能运维

在 Debian 上排查 Tomcat 线程相关日志/状态,一般分几种情况:看日志文件、看线程堆栈、看实时线程状态。下面按常见做法给你梳理。


一、Tomcat 日志文件位置(Debian)

Tomcat 日志通常在:

/var/log/tomcat9/        # 版本科幻依版本不同
/var/log/tomcat/

常见日志文件:

  • catalina.out:最重要,标准输出和异常
  • catalina.YYYY-MM-DD.log
  • localhost.YYYY-MM-DD.log
  • manager.log
  • host-manager.log

查看线程报错(如线程池满、超时):

tail -f /var/log/tomcat9/catalina.out
grep -i "thread" /var/log/tomcat9/catalina.out
grep -i "timeout" /var/log/tomcat9/catalina.out

二、查看 Tomcat 线程池状态(运行信息)

1️⃣ 通过 jstack 查线程堆栈(最常用)

先找 Tomcat 的 Java 进程:

ps -ef | grep tomcat
# 或
jps

假设 PID 是 1234:

sudo jstack 1234 > tomcat_threads.log

分析线程:

grep -A 20 "http-nio" tomcat_threads.log
grep -c "RUNNABLE" tomcat_threads.log
grep -c "BLOCKED" tomcat_threads.log

常见线程名:

  • http-nio-8080-exec-*(请求处理线程)
  • ajp-nio-*
  • ContainerBackgroundProcessor

2️⃣ 实时看线程数

top -H -p 1234

查看 Tomcat 总线程数:

ps -eLf | grep 1234 | wc -l

三、开启 Tomcat 线程池日志(推荐)

在 server.xml 中配置 AccessLog + 线程信息:

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="access_log"
       suffix=".txt"
       pattern="%h %l %u %t "%r" %s %b %D %I" />
  • %D:请求耗时(毫秒)
  • %I:线程名(可看线程占用)

四、用 JMX / Manager 看线程(图形化)

1️⃣ Tomcat Manager

访问:

http://IP:8080/manager/status

可看到:

  • 当前线程数
  • 最大线程数
  • 忙碌线程数

2️⃣ jconsole / VisualVM

jconsole

连接 Tomcat PID,看:

  • Threads
  • CPU
  • Heap

五、常见线程问题排查方向

  • 线程暴涨 → 连接池 / 外部接口阻塞
  • BLOCKED 多 → 锁竞争(synchronized / DB)
  • RUNNABLE 但 CPU 高 → 死循环 / 正则 / JSON
  • WAITING 多 → 线程池配置不合理

六、Debian 上常用组合命令

# 实时看日志
tail -f /var/log/tomcat9/catalina.out

# 抓线程堆栈
sudo jstack $(pgrep -f tomcat) > t.log

# 看线程数
ps -eLf | grep tomcat | wc -l

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

  • Tomcat 版本(8 / 9 / 10)
  • 具体现象(卡死 / 线程多 / 报错)
  • 是否用了 NIO / APR

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

0 踩