java服务中断,业务报系统转圈圈

现象

业务:业务操作请求卡住,服务中断。
系统:
GC正常,CPU使用正常,java线程巨多(全是http线程),所有JVM工具都可用 jmap,jstack

导出线程堆栈

"http-nio-9207-exec-57" - Thread t@28198
   java.lang.Thread.State: WAITING
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for <78b77a6b> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at com.alibaba.druid.pool.DruidDataSource.takeLast(DruidDataSource.java:2208)
	at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1680)
	at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1417)
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1397)
	at com.alibaba.druid.pool.DruidDataSource.getConnection$original$5uq4PWYo(DruidDataSource.java:1387)

发现大部分http线程都卡在
com.alibaba.druid.pool.DruidDataSource.takeLast(DruidDataSource.java:2208)

不能分配数据连接了?

用mysql show FULL PROCESSLIST 结果中也确实看不到对应实例的连接。大概推断是java连接池不能分配数据库连接,导致请求都卡住。

为什么?

排查nacos中的关于DataSource的配置有问题,改了之后,观察两天,故障排除.

posted @ 2025-05-22 09:42  方东信  阅读(20)  评论(0)    收藏  举报