[英]S3 Upload with pycurl interrupts
我正在使用pycurl作為boto
Python庫的后端。 它非常快速且功能多樣,但我遇到的問題是上傳大文件經常在連接重置時失敗。 當我使用plain boto
和普通的httplib
,它更可靠。
我使用Wireshark發現的是,經過一段時間(或有時很快),我的機器停止從S3接收ACK,因此它重置連接。 似乎pycurl
如此之快以至於扼殺了連接。 如果我限制上傳(我使用多接口)或使用較慢的互聯網連接,上傳運行正常。
我仍然想知道我可能做錯了什么。
我還嘗試使用.NET S3 SDK上傳。 它慢了3倍,但成功了。 此外,它全部在Windows 7上,同一網絡上的OS X機器再次上傳速度慢得多,但可靠。
既然您提到在Windows 7上遇到問題,可以以管理員身份運行命令提示符並發布netsh int tcp show global
的結果嗎? 您應該看到如下內容:
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Chimney Offload State : automatic
NetDMA State : enabled
Direct Cache Acess (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : none
ECN Capability : disabled
RFC 1323 Timestamps : disabled
我建議您將結果復制/粘貼到.txt文件中,以記下您當前的設置。 您感興趣的設置是煙囪卸載,接收側擴展(RSS)和NetDMA。 這些都是嘗試從/向NIC或CPU卸載處理的所有功能,它們有時會導致出現類似於您所描述的症狀的問題。
在搞亂RSS或NetDMA之前,我會嘗試通過運行netsh int tcp set global chimney=disabled
並禁用“ Device Manager > Network Adapters > Advanced tab
下的TCP卸載來禁用Chimney Offload。
如果這不能解決您的問題,您可能需要嘗試其他兩個選項。 這是一篇Microsoft知識庫文章,其中詳細介紹了修改所有這些內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.