Getting Error: "CURLerror (curl_easy_perform() failed) - code=2 msg='Failed initialization'."

Getting Error: "CURLerror (curl_easy_perform() failed) - code=2 msg='Failed initialization'."

(提交以下问答字符串,因为它可能对收到类似错误消息的其他人有所帮助...)


"M"提交的问题:

我有 Windows 7 64 位 ODBC 驱动程序。使用 Attunity Replicate 时,我试图从 Snowflake 读取 1TB 的数据,它在 运行 大约 5 小时后出现以下错误:

结果下载worker错误:Worker错误:[Snowflake][Snowflake] (4)

URLhttps://sfc-va-ds1-2-customer-stage.s3.amazonaws.com/ogn3-s-vass2706/results/018ef7de-01c5-8ec1-0000-2ab10047f27a_0/main/data_1_5_225?x-amz-server-side-encryption-customer-algorithm=AES256&response-content-encoding=gzip&AWSAccessKeyId=AKIAJP5BI3JZEVKDRXDQ&Expires=1568894118&Signature=MoTOQPf5ZiBjX8YNYWJ6J0KaH5Q%3D 的 REST 请求失败:CURL错误(curl_easy_perform() 失败)- code=2 msg='Failed initialization'.

注意:此错误发生在 运行 作业被触发后大约 5 小时。

"KM" 响应 #1:

1) 这个问题是间歇性出现还是一直出现?

2) 这个问题是否发生在小数据集上?

3) 您使用的 Snowflake ODBC 版本是什么?您可以使用最新的 ODBC 驱动程序版本 2.19.14 并告诉我们行为吗?

4) 您是否在网络中使用代理?

5) 请 运行 从 Snowflake Web GUI 或从 SnowSQL 终端执行以下语句,以获取需要列入 firewall/network 白名单的端点列表。 (与您的网络团队分享端点详细信息)

 SELECT SYSTEM$WHITELIST();

或者(如果你想要稍微更易读的输出):

select t.value:type::varchar as type, t.value:host::varchar as host, t.value:port as port from table(flatten(input => parse_json(system$whitelist()))) as t;

注意:为了正常运行,Snowflake 必须能够访问一组 HTTP/HTTPS 个地址。如果您的服务器策略拒绝访问大部分或所有外部 IP 地址和网站,您必须将这些地址列入白名单以允许正常的服务操作。

与 Snowflake 的所有通信都通过端口 443 进行。但是,CRL 和 OCSP 认证检查通过端口 80 传输。您组织的网络管理员必须打开防火墙以允许端口 443 和 80 上的流量。


"M" 后续响应 #1:

请在下面找到我对您的问题的回复:

1) 这是间歇性问题。并非总是失败。

2) 小数据集不会出现此问题。对于较大的数据集,作业 运行s 持续 11-12 小时,然后因指定错误而失败。

3) 我们正在使用 ODBC 驱动程序版本:2.19.09.00。将检查更高版本。

4) 不。我们没有在网络中使用任何代理。

5) 好的。

我将检查我们网络中的所有 Snowflake IP 地址并将其列入白名单,安装最新的 ODBC 驱动程序并再次 运行 作业。我会及时通知您结果。


"M" 后续响应 #2:

我已经将ODBC驱动升级到最新版本2.19.14。

现在 运行ning 作业在 运行ning 24 小时后失败并出现不同的错误。

错误信息:

Result download worker error: Worker error: [Snowflake][Snowflake] (4)

REST request for URL https://sfc-va-ds1-2-customer-stage.s3.amazonaws.com/ogn3-s-vass2706/results/018f030a-0164-1b0c-0000-2ab1004b8b96_0/main/data_5_6_219?x-amz-server-side-encryption-customer-algorithm=AES256&response-content-encoding=gzip&AWSAccessKeyId=AKIAJP5BI3JZEVKDRXDQ&Expires=1569308247&Signature=2DSCUhY7DU56cpq6jo31rU5LKRw%3D failed: CURLerror (curl_easy_perform() failed) - code=28 msg='Timeout was reached'.

请问有什么建议吗?


KM 回复#2:

1) 你的操作系统是什么?

2) 这个问题发生在小数据集还是大数据集上?

3) 您能否尝试清除 Windows 服务器示例的 TEMP 位置上的一些 space,它将是 C:\Windows\Temp 和 C:\Users\\AppData\Local\Temp\ 和 linux /tmp.

4) 你能确定 URL https://sfc-va-ds1-2-customer-stage.s3.amazonaws.com 被列入白名单吗

5) 尝试命令检查连通性。

curl -v -k https://sfc-va-ds1-2-customer-stage.s3.amazonaws.com


"M" 后续响应 #3:

1) 操作系统:Windows Server 2012 R2.

2) 这个问题只发生在大数据集上——尤其是当作业 运行s 持续大约 24 小时时。

3) 完成。清除了 space.

4) URL 已列入白名单。

5) 在 windows 电源 shell 上,此命令给出错误:

Invoke-WebRequest:找不到与参数名称匹配的参数 'k'。

在line:1char:9

+ curl -v -k https://sfc-va-ds1-2-customer-stage.s3.amazonaws.com

+     ~~

  + CategoryInfo     : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException

  + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

KM 响应 #3:

使用 CURL 命令测试与 Snowflake 的连接。 (确保机器上安装了 curl,如果没有那么你可以从第三方下载 curl 例如 https://curl.haxx.se/download.html

curl -v -k https://sfc-va-ds1-2-customer-stage.s3.amazonaws.com

有时,当 TEMP 位置中 space 所剩无几时,可能会发生此问题。您可以尝试 运行 作业并监控 %TEMP% space.

我不确定 Attunity 工具如何工作,但一些 ETL 工具(如 Informatica ETL 工具)会在服务器上创建临时文件并使用 %TEMP% 位置。


"M" 后续响应 #4:

使用curl命令,现在可以连接成功了。我现在将触发作业并监控 %TEMP% 位置。


还有其他想法、建议或可能的解决方法吗?