Délais d’expiration et nouvelles tentatives pour les applications sensibles à la latence
Dans certaines situations, une application reçoit une réponse d'Amazon S3 indiquant qu'une nouvelle tentative est nécessaire. Amazon S3 mappe les noms de compartiment et d'objet aux données d'objet qui leur sont associées. Si une application génère des taux de demande élevés (généralement des taux soutenus de plus de 5 000 demandes par seconde pour un petit nombre d'objets), elle peut recevoir des réponses HTTP 503 slowdown. Si ces erreurs se produisent, chaque kit AWS SDK implémente une logique de nouvelle tentative automatique à l’aide d’une interruption exponentielle. Si vous n’utilisez pas de kit SDK AWS, vous devez implémenter une logique de nouvelle tentative lors de la réception de l’erreur HTTP 503. Pour de plus amples informations, veuillez consulter Nouvelles tentatives après erreur et backoff exponentiel dans AWS dans la Référence générale sur Amazon Web Services.
Amazon S3 se met automatiquement à l'échelle en réponse aux taux soutenus de nouvelles demandes, optimisant dynamiquement les performances. Tandis qu’Amazon S3 optimise en interne le taux de nouvelles demandes, vous recevez temporairement des réponses HTTP 503 jusqu’à ce que l’optimisation soit terminée. Après qu'Amazon S3 optimise en interne les performances pour le nouveau taux de demandes, toutes les demandes sont généralement traitées sans nouvelles tentatives.
Pour les applications sensibles à la latence, Amazon S3 conseille un suivi et des opérations de nouvelles tentatives plus lentes. Lorsque vous retentez une demande, nous recommandons l'utilisation d'une nouvelle connexion à Amazon S3 et l'exécution d'une nouvelle recherche DNS.
Lorsque vous effectuez des demandes volumineuses de taille variable (par exemple, plus de 128 Mo), nous conseillons de suivre le débit obtenu et de procéder à de nouvelles tentatives sur les 5 % les plus lents des demandes. Lorsque vous exécutez des demandes plus petites (par exemple, inférieures à 512 Ko), où les latences médianes sont souvent dans une plage de dix millisecondes, une bonne instruction consiste à retenter une opération GET ou PUT après 2 secondes. Si de nouvelles tentatives sont nécessaires, la bonne pratique consiste à se retirer. Par exemple, nous recommandons de n’émettre une nouvelle tentative qu’après 2 secondes et une deuxième nouvelle tentative au bout de 4 secondes supplémentaires.
Si votre application adresse des demandes de taille fixe à Amazon S3, vous devez escompter des temps de réponse plus cohérents pour chacune de ces demandes. Dans ce cas, une stratégie simple consiste à identifier le 1 % de demandes les plus lentes et de les retenter. Même une simple nouvelle tentative est fréquemment efficace pour réduire la latence.
Si vous utilisez AWS Key Management Service (AWS KMS) pour le chiffrement côté serveur, consultez la section Quotas dans le Guide du développeur AWS Key Management Service afin d'obtenir des informations sur les taux de demandes pris en charge par rapport à votre cas d'utilisation.