DataX
DataX copied to clipboard
OracleReader:抽取oracle大数据量时候,报错:java.sql.SQLRecoverableException:io错误 连接超时(Read failed)
在使用oraclereader抽取oracle的几十亿条数据量时候,报错。
目前排查的问题点: 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个正常。
目前排查的问题点: 6、怀疑是资源池的,闲置超时问题。查看了datax源码,oracle没有采用资源池,而是每个task新建连接。所以排除这个问题。
在1个channel的时候,数据是忽然抽取不到,然后报错的。怀疑是task的query的时候,忽然断开的。大概率是这个问题,但是无法定位,是什么机制导致了这个问题。
测试,是写入的时候出的错误,然后最后一条写入后,一直无法写入,知道15分钟后(900s)报错超时。
怀疑是跟某种超时参数有关,但是查询了oracle的参数列表,没有15min的参数。
datax的代码里,query_timeout是48h。
在rs.next()这里bao'c报的错误。我在下面打印了一行,逐条排查,发现都是超时15min后,报的错误。这个datax是不有有默认的参数?
测试,是写入的时候出的错误,然后最后一条写入后,一直无法写入,知道15分钟后(900s)报错超时。 怀疑是跟某种超时参数有关,但是查询了oracle的参数列表,没有15min的参数。 datax的代码里,query_timeout是48h。 在rs.next()这里bao'c报的错误。我在下面打印了一行,逐条排查,发现都是超时15min后,报的错误。这个datax是不有有默认的参数?
看到有的地方说,使用德鲁伊的连接池。但是在源代码里面没找到。有没可能德鲁伊的默认参数在哪个步骤带进去的?
目前搜集到的相关的问题: https://github.com/alibaba/DataX/issues/601 https://github.com/alibaba/druid/issues/2187 但是尝试了,也都没解决
也怀疑是不是这个waitWriterTime过大的原因
为啥喜欢用截图
我也碰到了这个问题,15分钟后time out也有,客户那里碰到的。更多的是一直卡着,也不同步数据,一直找不到原因