Java 应用部署在 Tomcat 上发生“宕机”(无法访问、进程退出、卡死等),常见原因可以归类为下面几类,你可以按图索骥排查。
Tomcat 进程直接挂掉或假死。
常见类型:
Java heap space:堆内存不足GC overhead limit exceeded:频繁 GCPermGen space / Metaspace:类加载过多Unable to create new native thread:线程数过多排查:
# 看是否有 OOM 日志
catalina.out
hs_err_pid*.log
解决:
-Xms512m -Xmx1024m
-XX:MetaspaceSize=256m
现象:
排查:
jstat -gcutil <pid> 1000
<Connector port="8080" maxThreads="200" />
现象:
解决:
maxThreadsconnectionTimeout="20000"
acceptCount="100"
高并发下容易被打死。
排查:
jstack <pid> > thread.txt
看有没有:
BLOCKEDdeadlock排查:
top
free -m
dmesg | grep kill
df -h
导致 Tomcat 线程全部卡住。
ps -ef | grep tomcat
catalina.out
localhost.log
jps
jstat
jstack
top
df -h
你可以把下面信息发我,我可以更精准判断:
我可以帮你定位是代码问题还是配置问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。