nzSQLException 读取超时错误
Posted
技术标签:
【中文标题】nzSQLException 读取超时错误【英文标题】:Read timed out error by nzSQLException 【发布时间】:2018-01-22 09:20:34 【问题描述】:在使用带有 Netezza 数据库的 java 代码时,
得到org.netezza.error.NzSQLException: Read timed out
的错误
基本上,java代码会生成一堆csv文件,
每次生成 CSV 文件后,CSV 都会加载到 netezza 数据库中。
我使用以下查询(Java 代码片段)进行 CSV 上传
INSERT INTO "+table + " SELECT * FROM EXTERNAL '"
+ CSVFileName
+ "' USING ( MAXERRORS 0 DELIMITER ',' Y2BASE 2000 ENCODING 'internal' REMOTESOURCE 'JDBC' ESCAPECHAR '\' ) ";
这适用于大多数文件,然后突然我开始收到read timed out
错误。
我的 csv 文件包含 375000 到 750000 行(大约 28 到 56 MB 文件大小)。
Java 代码使用 8 个线程来创建这些 CSV,对于同一个表,有可能两个线程正在尝试加载数据。 Java 代码将从 Windows 机器上运行。
我最初的猜测是 JDBC 驱动程序可能对读取 CSV 文件有一些时间限制。
关于如何避免出现此错误/或任何更好方法的任何想法。
【问题讨论】:
【参考方案1】:如果它适用于其他文件,但不适用于较大的文件,我可以想到几种可能性:
-
你的接收netezza盒子接收数据不够快(虽然我可能会说不到100MB不算多)
您的目标 NZ 系统是 VMware 和/或位于慢速网络/防火墙后面
源文件访问速度不够快
McAfee 或其他防病毒扫描程序正在阻止他的文件
文件位于慢速/过载磁盘上
您程序中的另一个线程阻塞文件的时间过长(您过早启动对 netezza 的加载)
超时设置得很低
说 1 秒
我会尝试将超时时间增加到 1000 秒以查看问题是否消失,然后向下工作直到找到限制。 其次,我会尝试关闭创建文件的 JAVA 代码中的所有并行性,看看它是否消失
请告诉我们进展如何
【讨论】:
它不在慢速网络上,& 文件在发送插入之前先完全写入。防火墙问题也会导致所有文件出现此类错误,但在我的情况下,800 个文件中有 71 个出现错误。超时设置为 0。实际上是无限的。我正在使用 jdbc 驱动程序 7.0,所以现在我正在尝试使用 7.2 检查驱动程序是否存在问题。 快乐狩猎,这不是一件容易的事。间歇性错误是最糟糕的。关于防火墙和病毒扫描程序:永远不要指望它们在运行时会始终如一地运行......但许多其他事情可能会导致类似的问题。一个非详尽的列表是 Windows AD 服务器、网络交换机和其他内置故障转移的组件......以上是关于nzSQLException 读取超时错误的主要内容,如果未能解决你的问题,请参考以下文章
SQLE_NOT_PUBLIC_ID Sybase mobilink 错误
JedisConnectionException - 读取超时错误