簡體   English   中英

使用pycurl中斷上傳S3

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM