DataX icon indicating copy to clipboard operation
DataX copied to clipboard

OracleReader:抽取oracle大数据量时候,报错:java.sql.SQLRecoverableException:io错误 连接超时(Read failed)

Open stupidxian opened this issue 1 year ago • 10 comments

在使用oraclereader抽取oracle的几十亿条数据量时候,报错。 image

stupidxian avatar Mar 31 '23 02:03 stupidxian

目前排查的问题点: 1、java环境噪音的问题,已增加启动命令参数: -Djava.security.egd=file:/dev/./urandom -Dsecurerandom.source=file:/dev/./urandom 但依然报错。

2、查看了源码,关于query的timeout的问题,默认值是48h,所以排除。

3、增加了jvm到8g,启动了5个channel。内存是够的。

4、手动查询报错的sql,是没问题的。

5、怀疑oracle的超时连接,所以设置channel为1,单个task运行,运行了12个h,起了8个任务,报错了两个,其余6个正常。

stupidxian avatar Mar 31 '23 02:03 stupidxian

目前排查的问题点: 6、怀疑是资源池的,闲置超时问题。查看了datax源码,oracle没有采用资源池,而是每个task新建连接。所以排除这个问题。

stupidxian avatar Mar 31 '23 02:03 stupidxian

在1个channel的时候,数据是忽然抽取不到,然后报错的。怀疑是task的query的时候,忽然断开的。大概率是这个问题,但是无法定位,是什么机制导致了这个问题。 image

stupidxian avatar Mar 31 '23 02:03 stupidxian

测试,是写入的时候出的错误,然后最后一条写入后,一直无法写入,知道15分钟后(900s)报错超时。 怀疑是跟某种超时参数有关,但是查询了oracle的参数列表,没有15min的参数。 datax的代码里,query_timeout是48h。 在rs.next()这里bao'c报的错误。我在下面打印了一行,逐条排查,发现都是超时15min后,报的错误。这个datax是不有有默认的参数? image

stupidxian avatar Apr 03 '23 09:04 stupidxian

测试,是写入的时候出的错误,然后最后一条写入后,一直无法写入,知道15分钟后(900s)报错超时。 怀疑是跟某种超时参数有关,但是查询了oracle的参数列表,没有15min的参数。 datax的代码里,query_timeout是48h。 在rs.next()这里bao'c报的错误。我在下面打印了一行,逐条排查,发现都是超时15min后,报的错误。这个datax是不有有默认的参数? image

看到有的地方说,使用德鲁伊的连接池。但是在源代码里面没找到。有没可能德鲁伊的默认参数在哪个步骤带进去的?

stupidxian avatar Apr 03 '23 09:04 stupidxian

目前搜集到的相关的问题: https://github.com/alibaba/DataX/issues/601 https://github.com/alibaba/druid/issues/2187 但是尝试了,也都没解决

stupidxian avatar Apr 12 '23 02:04 stupidxian

image 也怀疑是不是这个waitWriterTime过大的原因

stupidxian avatar Apr 12 '23 02:04 stupidxian

为啥喜欢用截图

baisui1981 avatar Apr 12 '23 04:04 baisui1981

我也碰到了这个问题,15分钟后time out也有,客户那里碰到的。更多的是一直卡着,也不同步数据,一直找不到原因

zlj0123 avatar May 04 '23 02:05 zlj0123

我也碰到了这个问题,15分钟后time out也有,客户那里碰到的。更多的是一直卡着,也不同步数据,一直找不到原因

加个联系方式不 拉个小组讨论下。邮箱:[email protected]

stupidxian avatar May 04 '23 08:05 stupidxian