tuichenchuxin / tuichenchuxin.github.io

1 stars 0 forks source link

Connection is not avaible #1

Closed dj2kk closed 3 months ago

dj2kk commented 5 months ago

您好,我看到您的文章《connection_is_not_avaible》,我也碰到了一样的问题,也是偶发,频率比较高, 我没太看明白您文章中使用的xxljob配置, 我是用的是XXL-JOB v2.3.1, 我配置了最大连接数200任然报这个‘Connection is not avaible’错误, 通过您的文章,我理解的意思是使用的配置项不对, 但是我这情况和您不一样的是,我的配置项是对的,是生效的。 重启xxljob项目通过mysql查询show processlist,能看到xxl_job库当前连接数是15个,和我配置minimum-idle=15 是一致的。 但是这个错误偶发,我不知道应该怎么复现它。希望您能帮我指点迷津,谢谢🙏 这个是我的配置信息:

spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=15
spring.datasource.hikari.maximum-pool-size=200
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=50000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.max-lifetime=900000
spring.datasource.hikari.connection-timeout=50000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.keepalive-time=300000
spring.datasource.hikari.validation-timeout=1000

这个是我截取的异常日志片段:

Caused by: org.apache.ibatis.exceptions.PersistenceException:
### Error updating database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: HikariCP - Connection is not available, request timed out after 10000ms.
### The error may exist in class path resource [mybatis-mapper/XxlJobRegistryMapper.xml]
### The error may involve com.xxl.job.admin.dao.XxlJobRegistryDao.registryUpdate
### The error occurred while executing an update
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: HikariCP - Connection is not available, request timed out after 10000ms.
tuichenchuxin commented 5 months ago

是不是连接没有成功释放掉?并且看起来这个 request timed out after 10000ms 也和配置的 50000 不一致。 可以打开 hikari debug 日志看看真实情况,或者想办法在复现的时候获取连接信息分析。

dj2kk commented 5 months ago

好的,感谢您的回复,因为我是拆箱即用的xxl项目,没有修改任何代码,也没有排查过连接释放的问题, 我需要学着添加一些关于hikari连接池的监控😄。 request timed out after 10000ms 和配置的 50000 不一致的问题,由于前两天报错频率太频繁,才调到50s, 截止到目前为止还没出现过这个错误,所以这周我再跟进一下错误信息后,再来贴上日志信息。

dj2kk commented 3 months ago

找到问题并解决了,特来反馈情况,原因是另一个项目组起的应用连接数据库密码错误,导致大量连接阻塞(Waiting in connection_control plugin),于三周前处理掉后,至今再也没出现过了😄。