在 Ubuntu 上“定位 Tomcat 慢日志”,通常分两种情况:
下面按常见场景说明。
Tomcat 日志一般在:
/var/log/tomcat9/ # Ubuntu 默认(版本可能不同)
# 或
/opt/tomcat/logs/
常见日志文件:
catalina.out:主日志localhost_access_log.*.txt:访问日志catalina.yyyy-mm-dd.log查看:
ls -lh /var/log/tomcat9/
编辑 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:秒(小数)grep "localhost_access_log" /var/log/tomcat9/localhost_access_log.*.txt
按耗时排序(假设第 N 列是 %D):
awk '{print $NF, $0}' localhost_access_log.txt | sort -nr | head
sudo tail -f /var/log/tomcat9/catalina.out
常见慢原因:
Tomcat / Java 启动慢,常因:
SecureRandom 初始化慢
解决:
sudo apt install haveged
sudo systemctl enable haveged
sudo systemctl start haveged
或 JVM 参数:
-Djava.security.egd=file:/dev/./urandom
在 server.xml 加:
<Valve className="org.apache.catalina.valves.RequestDumperValve" />
或自定义 Filter 记录 > 1s 的请求。
ps -ef | grep tomcat
jstack <pid> > tomcat.log
看:
BLOCKEDWAITING1. 看 access_log + %D → 找慢接口
2. tail catalina.out → 看异常
3. 安装 haveged → 排除启动慢
4. jstack → 看线程卡哪
如果你能补充:
我可以直接给你精确命令。