【发布时间】:2019-12-28 14:48:57
【问题描述】:
我正在使用 ADF 复制活动将 azure blob 上的文件复制到 azure postgres .. 我在做递归复制,即文件夹中有多个文件.. 很好.. 我必须复制的 5 个文件的大小总计约为6GB。运行 30-60 分钟后活动失败。使用了 100-500 的写入批量大小,但仍然失败。 使用 4 或 8 个或自动 DIUS,类似地尝试使用 1、2、4、8 或自动并行连接到 postgres。通常它似乎每个源文件使用 1 个。 azure postgres 服务器有 8 个内核,临时缓冲区大小为 8192 kb。允许的最大值是 16000 kb。甚至尝试使用它,但我一直在遇到 2 个错误。 ms 支持团队建议使用重试选项。如果我得到一些但低于 r 的错误,仍在等待 pg 团队的回复。
答案:{ '错误代码':'2200', 'message': ''Type=Npgsql.NpgsqlException,Message=Exception while reading from stream,Source=Npgsql,''Type=System.IO.IOException,Message=Unable to read data from the transport connection: 强制现有连接被远程主机关闭。,Source=System,''Type=System.Net.Sockets.SocketException,Message=一个已存在的连接被远程主机强行关闭,Source=System,'', “故障类型”:“用户错误”, 'target': 'csv 到 pg 暂存数据迁移', '细节': [] }
或
目标 csv 到 pg 暂存数据迁移的操作失败:'Type=Npgsql.NpgsqlException,Message=Exception while flushing stream,Source=Npgsql,''Type=System.IO.IOException,Message=Unable to write data to the transport connection: 已存在的连接被远程主机强行关闭。,Source=System,''Type=System.Net.Sockets.SocketException,Message=已存在的连接被远程主机强行关闭,Source=System
【问题讨论】:
-
该错误表明 PostgreSQL 服务器由于某些原因关闭了连接。您应该有权访问日志,其中一些消息应该会有所启发。
-
感谢您的回复,但我需要更多详细信息。 Azure postgres 日志(我什至将服务器属性 log_error_verbosity 更改为 Verbose)只是给出了我在上面粘贴的类似错误消息。您知道我需要更改哪些其他服务器属性才能查看详细日志吗? postgres 关闭连接的任何原因.. 我看到指标 .. 最大内存利用率
-
有没有机会在开发机器上的常规 PostgreSQL 上重现这个?
-
不,因为我正在使用 ADF 从 Blob 复制到 Azure Pg。我正在等待 MS 支持 PG 团队的回复。问题很简单。连接被杀死。谁杀死了它,为什么? ADF 是否无法处理如此大容量的负载。对于大约 10 GB 的源中的多个 csv 文件中的 2000 万条记录,它可以正常工作,但对于其他任何内容都失败了。我使用最大允许的 DIU 和并行副本。我尝试启用日志,但没有提供更多详细信息,说明了一些前端错误……对我来说,这意味着 conn 已关闭。我也删除了 SSL 和 vnet。 adf 在欧洲。其他地区的 blob & pg
-
MS 支持向产品工程师确认这是一个已知问题,当数据量太大或需要很长时间复制时,ADF 复制活动可能会出现此问题。他们计划最早在下月初的某个时候提出解决方案。问题是由于他们使用的底层驱动器 Npgsql ......悲伤的部分是在 ms 文档中,他们说默认写入批处理是 10000 .. 对于这个问题,他们建议尝试使用较小的批处理大小可能是 10这行得通。我试过了。它随机工作。对于源和接收器中的相同数据,有时 1000 个批量大小有效,有时甚至 100 个失败。将尝试 10 个,但可能需要数周时间
标签: azure copy connection npgsql socketexception