alibaba / druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
https://github.com/alibaba/druid/wiki
Apache License 2.0
27.99k stars 8.59k forks source link

1.2.16版本的socketTimeOut,connectTimeout配置后还是无法生效 #5154

Open 156874 opened 1 year ago

156874 commented 1 year ago

druid版本:1.2.16

[com.al](https://github.com/alibaba/druid/issues/new#)ibaba druid-spring-boot-starter

事由:上周由于国产数据库驱动需要,更新了druid版本为1.2.15,之后发现有较多报错,提示Read timed out,分析原因,可能为加入了socketTimeOut参数导致,但是在yml里配置后报错依旧,看最新的1.2.16已解决,所以下载重试,配置如下,sql只要运行超过10s,报错依旧,不知是否为配置错导致? yml: spring: datasource: druid: initial-size: 1 max-active: 8 min-idle: 2 testWhileIdle: true maxWait: 60000
keepAlive: true socket-timeout: 20000 connect-timeout: 30000

日志报错: [[[2023-03-08 14:24:35.444 | TID: N/A | | hh| (https://github.com/alibaba/druid/issues/new#) | INFO | 9004 - 2023-03-08 14:24:35.444 INFO 9540 --- [ XNIO-1 task-1] amic.datasource.DynamicRoutingDataSource 144 : dynamic-datasource - add a datasource named [aa1111] success]]] [[[2023-03-08 14:24:45.604 | TID: N/A | | hh| (https://github.com/alibaba/druid/issues/new#) | INFO | 9004 - 2023-03-08 14:24:45.604 INFO 9540 --- [ XNIO-1 task-1] hhnfig.GlobalExceptionHandler 30 : org.springframework.dao.DataAccessResourceFailureException: CallableStatementCallback; SQL [exec auto_proc1111]; Read timed out; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Read timed out at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:107) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)

zeno-io commented 1 year ago

socket-timeout: 20000 => socketTimeout: 20000 可能有效

l7810 commented 1 year ago

我也遇到了同样的问题。目前通过 public DataSource authDataSource() { DruidDataSourceWrapper ds = new DruidDataSourceWrapper(); ds.setSocketTimeout(999999); ds.setConnectTimeout(999999); return ds; } 方式临时处理了!

看表现,貌似yml文件并没有bind成功。

这个默认设置10s,连接超时,为啥去设置socket时间? 1679796729810

另外,国产软件,能否将注释这块写清楚一点?

hrwhat commented 1 year ago

同样的问题,顶一下

hrwhat commented 1 year ago

发现最新的代码已经修复了这个bug
image

linsudeer commented 1 year ago

oracle 数据库还不支持设置吗?代码这里为什么只限制mysql可以配置 image

zengxiongzhuo commented 3 months ago

如果是1.2.16版本 可以换成1.2.18版本,修复了这个bug

wangwufan commented 2 months ago

我用的springboot3,先把druid-spring-boot-starter换成了druid-spring-boot-3-starter,druid升到了最高版本,然后在yml文件里设置connect-timeout和socket-timeout,终于生效了。

fanchenggang commented 2 weeks ago

如果不想换版本的话代码里面手动创建给 setSocketTimeout(60000);setConnectTimeout(60000); 都设置上 实测可以