我很难将大文件上传到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命令,但没有任何区别。所以我假设它的一些与服务器过载,负载平衡器或伪造端的这种限制有关。
亚历
答案 0 :(得分:0)
您可能需要在后端增加配置的允许执行时间。例如,在PHP中,您可能需要增加max_execution_time
中的php.ini
值,如this post中所述。这可以解释您失败的随机性......有一刻,您的上传速度可能会比另一时刻稍快一些。
答案 1 :(得分:0)
感谢您的反馈 - 我很感激。
@Treebasher,@小东 - 伙计们,更多信息(也许会有更多的亮点......)
我今天花了很多时间来研究这个问题,最后的判决是它对谷歌云服务器的限制。有这样的超时60秒断开连接。我测试了各种场景,升级卷曲等等。
在每个场景中: 使用bash / curl上传文件 从PHP上传 如果文件相对较小 - 比如说50megs - 就可以了。 如果它的大于> = 200mb并使用CHUNK方法 - 在60秒后我得到超时。 (我知道计时器:)。
我还测试了我的代码来自本地电脑和不同的服务器(数字海洋),它工作正常,甚至900兆文件正确发送(它发送约7分钟)但最后我得到了适当的json代码。所以 - 当然 - 没有错误的PHP代码,而不是php.ini中的任何默认设置 - 因为我在2个其他服务器上有2个标准configuratuiosn,但100%与谷歌云服务器上的特定配置相关并且与超时相关的东西。
我也排除了可能的解释: 这不是锻造结束的问题。 它不是卷曲版本 它不是net.ipv4.tcp_fin_timeout
唯一"怀疑"是谷歌云,所以下一步是谷歌云的问题追踪源,并找到解决方案。