Question S3 Upload avec des interruptions pycurl


J'utilise pycurl comme back-end pour le boto Bibliothèque Python Il est très rapide et polyvalent, mais le problème est que les téléchargements de gros fichiers échouent très souvent lors de la réinitialisation de la connexion. Quand j'utilise plain boto avec plaine httplib, c'est beaucoup plus fiable.

Ce que j'ai trouvé en utilisant Wireshark, c'est qu'après un certain temps (ou parfois assez vite aussi), ma machine cesse de recevoir les ACK de S3, elle réinitialise donc la connexion. Il semble presque que pycurl est si rapide que cela étouffe la connexion. Et si j'accélère le téléchargement (j'utilise l'interface multi) ou si ma connexion Internet est plus lente, le téléchargement se passe bien.

Je me demande toujours ce que je pourrais avoir éventuellement mal fait.

J'ai également essayé de télécharger avec le .NET S3 SDK. C'est environ 3 fois plus lent, mais réussit. En outre, tout est sur Windows 7, la machine OS X sur le même réseau télécharge à nouveau beaucoup plus lentement, mais de manière fiable.


11
2018-02-05 02:24


origine


Réponses:


Comme vous avez mentionné que vous rencontrez le problème sous Windows 7, pouvez-vous exécuter une invite de commande en tant qu'administrateur et publier les résultats de netsh int tcp show global? Vous devriez voir quelque chose comme ceci:

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

Je vous suggère de copier / coller les résultats dans un fichier .txt pour noter vos paramètres actuels. Les paramètres qui vous intéressent sont le déchargement de cheminées, le flux RSS (Receive-Side Scaling) et NetDMA. Ce sont toutes des fonctionnalités qui tentent de décharger le traitement de / vers la carte réseau ou le processeur, et elles peuvent parfois causer des problèmes avec des symptômes similaires à ceux que vous avez décrits.

Avant de jouer avec RSS ou NetDMA, j'essaierais de désactiver le déchargement de cheminée en exécutant netsh int tcp set global chimney=disabled et désactiver le déchargement TCP sous Device Manager > Network Adapters > Advanced tab.

Si cela ne résout pas votre problème, vous devrez peut-être expérimenter les deux autres options. Voici une Microsoft KB article avec des détails sur la modification de tous.


3
2018-02-12 15:31