在 Ubuntu 上出现 Java 线程卡顿(延迟、阻塞、响应慢),通常不是单一原因,而是系统、JVM、应用代码、资源竞争几类问题叠加。下面按常见原因和排查思路系统说明。
排查:
top
htop
mpstat -P ALL 1
关注:
%us(用户态)%sy(系统态)排查:
free -h
vmstat 1
cat /proc/meminfo
典型现象:
si/so(swap in/out)不为 0排查:
iostat -x 1
iotop
表现:
write() / read() 系统调用上等待排查:
ping
traceroute
netstat -anp | grep java
ss -tanp
排查:
jstat -gcutil <pid> 1000
看什么:
FGC 次数GCT 总时间常见原因:
synchronizedReentrantLock排查:
jstack <pid> > thread.txt
看:
BLOCKEDWAITINGdeadlock典型问题:
synchronized (this) {
// 耗时操作
}
DEBUG / TRACE建议:
ulimit -a
关注:
修改:
/etc/security/limits.conf
sysctl -a | grep tcp
如:
net.core.somaxconnvm.swappinesstop
free -h
iostat -x 1
jstat -gcutil <pid> 1000
jstack <pid> > t.txt
top -Hp <pid>
printf "%x\n" <tid>
在 jstack 中搜 nid=0x...
Ubuntu 上 Java 线程卡顿,80% 是 GC、锁、I/O、线程池问题,20% 是系统资源或内核参数问题。
如果你愿意,可以告诉我:
我可以帮你精准定位并给优化方案。