11

botoPython ライブラリのバックエンドとして pycurl を使用しています。非常に高速で用途が広いですが、接続のリセット時に大きなファイルのアップロードが頻繁に失敗するという問題があります。botoplainと plainを併用するhttplibと、はるかに信頼性が高くなります。

Wireshark を使用して分かったのは、しばらくすると (または場合によってはすぐに)、マシンが S3 からの ACK の受信を停止するため、接続がリセットされることです。pycurl通信速度が速すぎて接続が途切れてしまうようです。また、アップロードを調整したり (マルチ インターフェイスを使用)、低速のインターネット接続を使用したりしても、アップロードは問題なく実行されます。

私はまだ何が間違っていたのだろうかと思っています。

また、.NET S3 SDK でアップロードしようとしました。約 3 倍遅くなりますが、成功します。また、それはすべて Windows 7 上にあり、同じネットワーク上の OS X マシンのアップロードは非常に遅くなりますが、確実に行われます。

4

1 に答える 1

3

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 ファイルに貼り付け、現在の設定をメモすることをお勧めします。関心のある設定は、Chimney Offload、Receive-Side Scaling (RSS)、および NetDMA です。これらはすべて、NIC または CPU との間で処理をオフロードしようとする機能であり、説明したのと同様の症状で問題が発生することがあります。

RSS や NetDMA をいじる前に、 でnetsh int tcp set global chimney=disabledTCP オフロードを実行して無効にすることで、Chimney Offload を無効にしてみますDevice Manager > Network Adapters > Advanced tab

それでも問題が解決しない場合は、他の 2 つのオプションを試す必要があるかもしれません。これらすべての変更に関する詳細が記載されたMicrosoft KB 記事を次に示します。

于 2013-02-12T15:31:24.727 に答える