alibaba / druid

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

10s 就Socket read timed out #5039

Closed zhugw closed 1 year ago

zhugw commented 1 year ago

version: 1.2.12 显式配置了读超时时间

 --spring.datasource.connectionProperties=oracle.jdbc.ReadTimeout=600000

但是仍发现有10秒就Socket read timed out的情况

12:07 00:00:11.034 [ForkJoinPool.commonPool-worker-0] [ERROR] [c.alibaba.druid.pool.DruidDataSource] - {conn-10002} discard
java.sql.SQLRecoverableException: IO Error: Socket read timed out
        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:761)
        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:904)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1082)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3780)
        at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1343)
        at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3887)
        at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1079)
        at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:483)
        at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
        at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
        at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doQuery(MybatisSimpleExecutor.java:67)
        at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
        at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
        at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
        at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
        at com.sun.proxy.$Proxy57.selectList(Unknown Source)
        at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
        at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:158)
        at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:76)
        at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:62)
        at com.sun.proxy.$Proxy61.pagingGetUpdateStatuseList(Unknown Source)
        at com.caixin.people_companies.oracle2es.service.OrgOperAbndInfoRelaIncrementalSyncService.pagingGetChangedIdList(OrgOperAbndInfoRelaIncrementalSyncService.java:40)
        at com.caixin.people_companies.oracle2es.service.BaseIncrementalSyncService.putChangedId2QueueWithinRange(BaseIncrementalSyncService.java:226)
        at com.caixin.people_companies.oracle2es.service.BaseIncrementalSyncService.putChangedId2Queue(BaseIncrementalSyncService.java:192)
        at com.caixin.people_companies.oracle2es.service.BaseIncrementalSyncService.lambda$sync$0(BaseIncrementalSyncService.java:76)
        at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1626)
        at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1618)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.net.SocketTimeoutException: Socket read timed out
        at oracle.net.nt.TimeoutSocketChannel.read(TimeoutSocketChannel.java:174)
        at oracle.net.ns.NIOHeader.readHeaderBuffer(NIOHeader.java:82)
        at oracle.net.ns.NIOPacket.readFromSocketChannel(NIOPacket.java:139)
        at oracle.net.ns.NIOPacket.readFromSocketChannel(NIOPacket.java:101)
        at oracle.net.ns.NIONSDataChannel.readDataFromSocketChannel(NIONSDataChannel.java:80)
        at oracle.jdbc.driver.T4CMAREngineNIO.prepareForReading(T4CMAREngineNIO.java:98)
        at oracle.jdbc.driver.T4CMAREngineNIO.unmarshalUB1(T4CMAREngineNIO.java:534)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:485)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:612)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:226)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:59)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:747)
        ... 37 common frames omitted

这个10s的超时是哪里设置的呢?

zhangdp commented 1 year ago

spring.datasource.druid.socket-timeout

zhugw commented 1 year ago

看到了 默认的10s

com.alibaba.druid.pool.DruidAbstractDataSource#DEFAULT_TIME_SOCKET_TIMEOUT_MILLIS
public static final int DEFAULT_TIME_SOCKET_TIMEOUT_MILLIS = 10_000;
HSHunterR commented 1 year ago

这个感觉连简单SQL SELECT * FROM DUAL 都会超时啊

andyz168 commented 5 months ago

DEFAULT_TIME_SOCKET_TIMEOUT_MILLIS

怎么修改