Lorsque ma charge de travail Amazon Simple Storage Service (Amazon S3) est très élevée (dépassant les débits de demande décrits dans Recommandations générales relatives aux performances et aux débits de demande), les performances d'Amazon S3 n'évoluent pas avec la charge de travail. Dans ce cas, je reçois parfois des erreurs HTTP 500 ou 503. Comment optimiser les performances de mon compartiment Amazon S3 pour gérer un volume de demandes important ?

Important : Ces informations s'appliquent uniquement aux charges de travail qui dépassent les débits de demande décrits dans Recommandations générales relatives aux performances et aux débits de demande. La résolution suivante n'est pas requise pour des charges de travail moins importantes.

Amazon S3 maintient un index des noms de clé d'objet dans chaque région AWS. Les clés d'objet sont stockées en UTF-8 dans l'ordre binaire sur plusieurs partitions dans l'index. Le nom de clé détermine dans quelle partition est stockée la clé. L'utilisation d'un préfixe séquentiel, comme un horodatage ou une séquence alphabétique, augmente la probabilité qu'Amazon S3 cible une partition spécifique pour la majorité des clés, ce qui peut surcharger la capacité d'E/S de la partition.

Si votre charge de travail est un mélange de types de demande, introduisez un facteur aléatoire aux noms de clé en ajoutant une chaîne de hachage en tant que préfixe au nom de clé. En introduisant un facteur aléatoire au nom de clé, la charge d'E/S est répartie sur les différentes partitions d'index. Par exemple, vous pouvez calculer un hachage MD5 de la séquence de caractères que vous envisagez d'attribuer comme nom de clé, et ajouter trois ou quatre caractères du hachage en tant que préfixe au nom de clé. L'exemple suivant montre des noms de clé avec un hachage hexadécimal de quatre caractères ajouté en tant que préfixe : 

exampleawsbucket/232a-2019-14-03-15-00-00/cust1234234/photo1.jpg
exampleawsbucket/7b54-2019-14-03-15-00-00/cust3857422/photo2.jpg
exampleawsbucket/921c-2019-14-03-15-00-00/cust1248473/photo2.jpg
exampleawsbucket/ba65-2019-14-03-15-00-00/cust8474937/photo2.jpg
exampleawsbucket/8761-2019-14-03-15-00-00/cust1248473/photo3.jpg
exampleawsbucket/2e4f-2019-14-03-15-00-01/cust1248473/photo4.jpg
exampleawsbucket/9810-2019-14-03-15-00-01/cust1248473/photo5.jpg
exampleawsbucket/7e34-2019-14-03-15-00-01/cust1248473/photo6.jpg
exampleawsbucket/c34a-2019-14-03-15-00-01/cust1248473/photo7.jpg
...

Sans le préfixe de hachage de quatre caractères, Amazon S3 risque de répartir l'ensemble de cette charge sur une ou deux partitions d'index, car le nom de chaque objet commence par exampleawsbucket/2019-14-03-15-00-0, et tous les objets de l'index sont stockés dans un ordre alphanumérique. Le préfixe de hachage de quatre caractères permet de s'assurer que la charge est répartie sur les différentes partitions d'index.

Si votre charge de travail envoie principalement des demandes GET, vous pouvez ajouter un facteur aléatoire aux noms de clé. Vous pouvez également intégrer Amazon CloudFront avec Amazon S3 pour distribuer du contenu aux utilisateurs avec une faible latence et un débit élevé de transfert de données.


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 25/09/2017

Date de mise à jour : 19/07/2018