温馨提示×

怎么定位tomcat ubuntu慢日志

小樊
49
2026-09-21 19:41:05
栏目: 智能运维

在 Ubuntu 上“定位 Tomcat 慢日志”,通常分两种情况:

  1. Tomcat 自身访问日志里请求耗时慢
  2. Tomcat 启动 / 响应慢,需要排查原因

下面按常见场景说明。


一、先确认 Tomcat 日志位置(Ubuntu)

Tomcat 日志一般在:

/var/log/tomcat9/        # Ubuntu 默认(版本可能不同)
# 或
/opt/tomcat/logs/

常见日志文件:

  • catalina.out:主日志
  • localhost_access_log.*.txt:访问日志
  • catalina.yyyy-mm-dd.log

查看:

ls -lh /var/log/tomcat9/

二、定位“慢请求”(访问日志)

1. 开启访问日志(如果没开)

编辑 server.xml:

sudo vim /etc/tomcat9/server.xml

确认有:

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="localhost_access_log"
       suffix=".txt"
       pattern="%h %l %u %t "%r" %s %b %D" />

重点:

  • %D:请求耗时(毫秒)
  • %T:秒(小数)

2. 查看慢请求

grep "localhost_access_log" /var/log/tomcat9/localhost_access_log.*.txt

按耗时排序(假设第 N 列是 %D):

awk '{print $NF, $0}' localhost_access_log.txt | sort -nr | head

三、定位“Tomcat 启动慢 / 响应慢”

1. 看 catalina.out

sudo tail -f /var/log/tomcat9/catalina.out

常见慢原因:

  • Session 过多
  • 数据库连接慢
  • 线程阻塞
  • 随机数生成慢(重点↓)

2. 典型坑:熵池不足(非常常见)

Tomcat / Java 启动慢,常因:

SecureRandom 初始化慢

解决:

sudo apt install haveged
sudo systemctl enable haveged
sudo systemctl start haveged

或 JVM 参数:

-Djava.security.egd=file:/dev/./urandom

四、开启 Tomcat 慢请求日志(高级)

使用 SlowQuery / Request Dump

在 server.xml 加:

<Valve className="org.apache.catalina.valves.RequestDumperValve" />

或自定义 Filter 记录 > 1s 的请求。


五、线程 / 堆栈定位(真慢)

1. 查 Tomcat 进程

ps -ef | grep tomcat

2. 抓线程栈

jstack <pid> > tomcat.log

看:

  • BLOCKED
  • WAITING
  • 长时间 RUNNABLE

六、总结最快定位路线

1. 看 access_log + %D → 找慢接口
2. tail catalina.out → 看异常
3. 安装 haveged → 排除启动慢
4. jstack → 看线程卡哪

如果你能补充:

  • Tomcat 版本
  • Ubuntu 版本
  • 是“启动慢”还是“接口慢”

我可以直接给你精确命令。

0 踩