2017-05-05 71 views
0

我將大文件上傳到Autodesk Forge時遇到困難。將大文件上傳到Autodesk Forge和502錯誤

這就是我在做的: 我正確授權訪問使用2legged身份驗證,創建存儲桶,並且我能夠上傳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錯誤。我不知道該怎麼做。

我從Google雲中的服務器發送我的文件。我們也有負載平衡器。

你能幫助什麼會導致這個502錯誤,或者提供一些信息,如果有任何限制等?我確定我的代碼是可以的,因爲它適用於較小的文件< = 100MB。我也直接從CLI而不是從我的源代碼測試了curl命令,但沒有任何區別。所以我認爲它與服務器過載,負載平衡器或僞造端的這些限制有關。

亞歷

+0

嗨@alexz,我認爲它不會需要最大超時,如果有一個很小的塊(建議2M)。你能記錄可恢復上傳的會話ID嗎?如果有更多信息,我可以要求我們的工程師團隊檢查後端。我從其他使用C#的客戶那裏聽說過這個問題。雖然它不總是可重複的。我還要求他在下次擊中時用會話ID做筆記。 –

回答

0

您可能需要增加配置的允許執行時間在你的後端。例如,在PHP中,如this post中所討論的,您可能需要增加中的max_execution_time值。這可以解釋你的失敗的隨機性......有一次你的上傳速度可能比另一個時刻略快。

+0

thx爲響應,但它無法解釋爲什麼它也發生時,我直接在bash中運行curl命令 - 而不是在php中。 – alexz

+0

@alexz如果後端是用PHP編寫的,則無論您如何獲取數據都是如此。 PHP程序仍然在接收它,因此受到'php.ini'文件中指定的限制。 – Treebasher

+0

但我的意思是,我發送命令directylu從bash curl -v ...不是來自PHP的情況。 – alexz

0

thx爲您的反饋 - 我欣賞它。

@Treebasher,@Xiaodong - 傢伙,一些更多的信息(也許它會提供一些更多的光線......)

我今天花了很多時間來研究這個問題,最終的結論是它的種類限制在谷歌雲服務器上。這種超時60秒會斷開連接。我測試了各種方案,升級捲曲,在每一個場景等

: 上傳文件使用bash /捲曲 從PHP 如果文件比較小上傳 - 說50megs - 它去確定。 如果它大於200mb並使用CHUNK方法 - 在60秒後我超時。 (我checeked計時器:)

我也測試了我的代碼從本地電腦和不同的服務器(數字海洋),它工作正常,即使900兆文件正常發送(它發送約7分鐘),但最後我得到了正確的json代碼。所以 - 肯定 - 它沒有錯誤的PHP代碼,沒有在PHP中的任何默認設置。INI - 因爲我有2個其他服務器上的標準配置,但100%的東西與谷歌雲服務器上的特定配置相關,並與超時有關。

我也排除了潛在的解釋: 它在鍛造結束時不是問題。 其不捲曲版本 它不是net.ipv4.tcp_fin_timeout

唯一的「懷疑」是谷歌雲所以下一步是在谷歌的雲計算的問題OT跟蹤源,並找到解決方案。

相關問題