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 错误

使用java读取URL时读取超时错误

JedisConnectionException - 读取超时错误

FileZilla MLSD错误:连接超时读取目录列表失败

如何使用 Python 读取大型 Firestore 集合而不会遇到 503 超时错误

加载项目存储库时发生 SonarQube 5.1.1 读取超时错误