现象是线上环境某个服务的接口突然开始阻塞超时。
日志里可以看出是这个服务的连接池
###不能获得链接,排队超时
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
查了下这个有很多原因,但是如果是已经正常运行的代码突然出现这种问题。
并且数据库本身的连接数并没有什么大的波动。
并且没有慢SQL
使用同数据库的其他项目也都正常。
甚至同样代码的其他节点也正常。
部署项目的的服务器各项指标也正常。
甚至有可能这个服务本身,过会自己就好了。
出现类似症状的同学们,可以考虑排查下近期上线的代码,是否有在事务范围内,写了其他与数据库无关的耗时操作。
比如在spring项目中@Transactional注解的方法里写了类似远程调用之类可能会阻塞的东西。