0

我很难将大文件上传到 Autodesk Forge。

这就是我正在做的事情:我使用 2legged auth 正确授权访问,创建存储桶,并且我能够上传 revit 文件,作为回报,我会收到 URN(对象 ID)。这一切都恰到好处。

上传适用于大小高达 ~100MB 的文件。我还根据从https://github.com/Autodesk-Forge/forge-php-client获取的说明实现了简历上传

这种简历上传也适用于相对较小的文件——比如 50-100MB。我用块 2 和 5MB 进行了测试。

但我对更大的文件有一个真正的问题。比如说 200MB、500MB 或更大。我注意到,如果我使用非恢复选项上传 200MB 文件,那么它会正常运行,并且我会收到带有数据的 json。对于较大的文件 - 它是随机的。一旦他们通过,一次错误。我设法使用非恢复方法上传的最大文件约为 500MB。

但是,如果我对相同的 200MB 文件使用恢复上传,那么我会收到 502 错误。我还注意到这是随机发生的。我设法两次上传了 200 MB 的文件。但在大多数情况下(我会说 10 例中的​​ 9 例)它给出了令人讨厌的 502 错误。我不知道该怎么办。

我正在从谷歌云中的服务器发送我的文件。我们还有负载均衡器。

你能帮忙解决什么可能导致这个 502 错误,或者如果有任何限制等,请提供一些信息?我确定我的代码没问题,因为它适用于 <= 100MB 的较小文件。我还直接从 CLI 而不是从我的源代码测试 curl 命令,但没有任何区别。所以我假设它与服务器过载、负载平衡器或 Forge 端的此类限制有关。

亚历克斯

4

2 回答 2

0

谢谢您的反馈-我很感激。

@Treebasher,@Xiaodong - 伙计们,更多信息(也许它会提供更多信息......)

我今天花了很多时间来调查这个问题,最终的结论是它对谷歌云服务器的限制。有这样的超时 60 秒会中断连接。我测试了各种场景,升级了 curl 等。

在每种情况下:如果文件相对较小(例如 50megs),则使用 bash/curl 从 php 上传文件 - 一切正常。如果它更大 >= 200mb 并使用 CHUNK 方法 - 60 秒后我超时。(我用计时器检查了:)

我还从本地电脑和不同的服务器(数字海洋)测试了我的代码,它工作正常,甚至 900 个大型文件也被正确发送(发送了大约 7 分钟),但最后我得到了正确的 json 代码。所以 - 肯定 - 它不是错误的 php 代码,不是 php.ini 中的任何默认设置 - 因为我在 2 个其他服务器上有 2 个标准配置,但 100% 与谷歌云服务器上的特定配置和超时有关。

我还排除了潜在的解释:这在锻造结束时不是问题。它不是 curl 版本它不是 net.ipv4.tcp_fin_timeout

唯一的“怀疑”是谷歌云,所以下一步是在谷歌的云上追踪问题的根源并找到解决方案。

于 2017-05-08T18:31:42.777 回答
0

您可能需要在后端增加配置的允许执行时间。例如,在 PHP 中,您可能需要增加您在本文中讨论的max_execution_time值。这可能是您失败的随机性的原因……您的上传速度可能会比另一刻稍快。php.ini

于 2017-05-05T15:36:18.087 回答