2011-10-13 5 views
6

J'ai des milliers de petits fichiers (environ 1 Ko) à télécharger sur S3 toutes les minutes. Si je télécharge tous les fichiers dans la boucle "envoyer ma requête HTTP - attendre la réponse HTTP de S3 - envoyer la prochaine requête - attendre la réponse suivante ...", ça coûte beaucoup de temps car je dois attendre 2 fois de latence entre S3 et mon serveur. Bien sûr, j'utilise déjà l'en-tête HTTP Keep-Alive.S3 prend-il en charge le pipelining HTTP?

Alors j'essaye d'envoyer plusieurs requêtes HTTP sans attendre le pipelining correspondant (HTTP). J'essaie d'envoyer 20 demandes dans un lot et j'attends une réponse de 20. Je m'attendais à ce que cela économise beaucoup de temps car je peux toujours envoyer une demande quand la réponse précédente sur le chemin.

Cependant, cela ne rend pas le monde meilleur.

J'envoie mes 20 demandes en environ 200ms, puis j'essaye de recevoir la réponse. Je m'attendais à recevoir une réponse aussi vite que j'envoie des requêtes après la réception de la première réponse, comme this graph. En fait, après avoir reçu la première réponse, je dois attendre environ 300 ms pour chaque réponse. Il n'est pas mieux comparer à envoyer une demande et recevoir une réponse. Pourquoi je ne peux pas raccourcir le temps pour la technique de pipelining?

Pourquoi S3 coûte autant de temps pour chaque demande? S3 prend-il en charge le pipelining HTTP?

Merci.

Répondre

4

Amazon S3 parallélisation sportive pour contourner le problème de latence pour chaque demande.

Vous pouvez effectuer des centaines de demandes simultanées sur S3 et télécharger de gros lots de fichiers dans un délai très court.

Questions connexes