2012-08-09 91 views
2

我不確定這是否是問這個問題的正確位置,但我仍然會這樣做。上傳速度可能太快嗎?

我已經開發了一把umbraco CMS上傳程序,可以讓人們上傳文件的隊列中一氣呵成。這使用一些簡單的Flash應用程序,只需調用一個.NET ashx來一次上傳一個文件。一旦完成,下一個開始。

最近我有一個用戶打了一個問題,即1個或2個載會罰款上去了,但那麼剩下的失敗。這發生在他自己和他的客戶身上。經過一些調試之後,他認爲他發現了這個問題,但這似乎很奇怪,所以想知道是否有其他人有這個問題?

他和他的客戶是光纖寬帶連接,因此已經得到非常快的上傳速度上。當它在較低速度的寬帶連接上測試時,所有文件上傳都沒有問題。據他的一位開發人員朋友稱,顯然他們之前遇到過這種情況,爲了使其工作起來,必須略微延遲上傳腳本。

聽起來可能嗎?有沒有其他人碰到這個問題?有沒有已知的解決方法來防止上傳失敗?

回答

0

我以前沒有達成這個精確的問題,但我以前做過很多DSL和寬帶故障診斷的,所以會盡我所能來回答這個問題。

這有特定症狀2個可能的原因,一般都以外的網絡控制的(我還以爲)。

1)數據包丟失 當然,當一些鏈路接收到大量的流量時,他們可以選擇只丟棄大量數據(例如所有超過該鏈路的最大集合大小),但TCP/IP應該控制這一點,也期待這種事情不時下降,所以這似乎不太可能。

2)接收服務器 可能有一些到該服務器或甚至接收服務器的CPU/RAM等HTTP瓶頸,可能是在容量。

從故障排除的角度來看,即使這些症狀不應該(理論上)的存在,他們做的事實,你有一個特定的

下一步,如果你真的需要了解它是如何工作的所有可能會得到某種數據包嗅探器(如WireShark)試圖在數據包層次上研究究竟發生了什麼。

另外Socket編程可以經常程序直接到TCP/IP套接字,所以你會在較低網絡層來處理,並在看到的響應和超時等

此外,如果你控制接收服務器,然後你可以從這方面做同樣的事情,或者至少查看錯誤日誌,看看引發了什麼問題。

一個非常基本的方法可能是一個的pathping發送到接收服務器,如果這是可能的,這可能突出慢節點讓你的本地計算機和終端服務器之間的服務器或數據包丟失。

結果?在上傳代碼中放入一個緩慢的函數,至少應該讓代碼工作。

如果您需要對WireShark內容進行任何分析,請與我們聯繫。

0

我遇到了使用Flash上​​傳器和Firefox的MVC2網站的類似問題。服務器使用Big-IP負載均衡器進行負載平衡。我們在調試中發現,Firefox中的Flash沒有在連續請求上發送會話ID,負載均衡器會將連續請求發送到另一臺服務器。由於用戶在新服務器上沒有會話,請求失敗。

如果一個文件可以在一個塊中發送,它會很好地上傳。如果它需要第二個塊,則失敗。由於這個原因,在上傳不確定數量的文件之後上傳會失敗。

爲了解決這個問題,我寫了一個Silverlight上傳器。