最近项目开发完了,测试阶段频繁出现 无脑的"系统异常",
页面显示的异常是:
Could not open JDBC Connection for transaction; nested exception is java.sql.SQLNonTransientConnectionException: (conn=911434) Connection reset"
msg: "系统繁忙,请稍后再试"
timestamp: "2020-03-26 22:26:22.867"
日志服务器显示:
java.sql.SQLException: Connection.clearWarnings cannot be called on a closed connection
排查很久,主要几方面排查:
1.确认接口是否异常
2.确认sql有无异常
3.查看mysql服务器压力
4.查看配置文件中的数据源配置
最后发现,在配置中发现,没有配置检查数据库是否连接正常的检测配置(个人的理解),如下:
spring.datasource.druid.validationQuery=SELECT 'X'
或者
spring.datasource.druid.validationQuery=select 1 from dual
意思都一样,就是一个最简单的查询,确保数据库没有宕机,加上之后,系统繁忙 问题完美解决
2022-08-19 update
mariadb驱动会出现连接断开, 直接修改数据去驱动
spring.datasource.driverClassName 驱动修改为mysql驱动
org.mariadb.jdbc.Driver -> com.mysql.jdbc.Driver