今天晚上突然有个服务无法启动。这个服务在启动的时候会从数据库中加载一些数据。查看日志:有开始加载的日志,但没有完成加载的日志,判断问题是在加载数据时卡住。用top查看进程,发现CPU占用为0%。又怀疑可能是因为jvm内存不够,用jstat查看jvm内存使用情况,发现各区内存占用率较低,连young gc都没有出现。再用jstack查看线程栈,发现线程卡在JDBC底层的TCP套接字读取上:
------------------------------------
------------------------------------
main prio=10 tid=0x000000004cf54800 nid=0x1ec4 runnable [0x00002b990a821000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
at com.m
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)