Recommandations de performance pour Amazon S3 - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Recommandations de performance pour Amazon S3

Lors du développement d'applications qui téléchargent et extraient les objets depuis Amazon S3, suivez nos instructions sur les bonnes pratiques pour optimiser les performances. Nous proposons également des plus détaillé Modèles de conception des performances.

Pour obtenir les meilleures performances pour votre application sur Amazon S3, nous recommandons les directives suivantes.

Performances des mesures

Lors de l’optimisation des performances, examinez le débit du réseau, l’UC et les exigences DRAM. Selon les mélange des demandes de ces différentes ressources, il peut valoir la peine d'évaluer différents types d'instance Amazon EC2. Pour plus d'informations sur les types d'instances, consultez la section Types d'instances dans le guide de l'utilisateur Amazon EC2.

Il peut aussi être utile d’examiner le temps de recherche DNS, la latence et la vitesse de transfert des données à l’aide des outils d’analyse HTTP lors de la mesure des performances.

Pour comprendre les exigences de performances et optimiser les performances de votre application, vous pouvez également surveiller les réponses d'erreur 503 que vous recevez. La surveillance de certaines métriques de performances peut entraîner des dépenses supplémentaires. Pour plus d’informations, consultez Tarification Amazon S3.

Surveillance du nombre de réponses d'erreur de statut 503 (Ralentissement)

Pour surveiller le nombre de réponses d'erreur de statut 503 que vous recevez, vous pouvez utiliser l'une des options suivantes :

  • Utilisez les métriques de CloudWatch demande Amazon pour Amazon S3. Les métriques de CloudWatch demande incluent une métrique pour les réponses d'état 5xx. Pour plus d'informations sur les métriques relatives aux CloudWatch demandes, consultezSurveillance des métriques avec Amazon CloudWatch.

  • Utilisez le nombre d'erreurs 503 (Service non disponible) disponible dans la section des métriques avancées d'Amazon S3 Storage Lens. Pour plus d’informations, consultez Utilisation de métriques S3 Storage Lens pour améliorer les performances.

  • Utilisez la journalisation des accès au serveur Amazon S3. La journalisation des accès au serveur vous permet de filtrer et de passer en revue toutes les demandes qui reçoivent des réponses 503 (Erreur interne). Vous pouvez également utiliser Amazon Athena pour analyser les journaux. Pour en savoir plus sur la journalisation des accès au serveur, consultez Enregistrement de demandes avec journalisation des accès au serveur.

En surveillant le nombre de codes d'erreur de statut HTTP 503, vous pouvez souvent obtenir des insights précieux sur les préfixes, les clés ou les compartiments qui reçoivent le plus de demandes de limitation.

Mettre à l’échelle horizontalement les connexions de stockage

La répartition des demandes entre plusieurs connexions est un modèle de conception courant pour mettre horizontalement à l’échelle les performances. Lorsque vous développez des applications hautes performances, pensez à Amazon S3 comme à un très grand système réparti, et non comme un simple point de terminaison réseau, tel qu'un serveur de stockage traditionnel. Vous pouvez atteindre les meilleures performances en adressant plusieurs demandes concurrentes à Amazon S3. Répartissez ces demandes sur des connexions distinctes pour maximiser la bande passante accessible à partir d'Amazon S3. Amazon S3 n'a aucune limite pour le nombre de connexions à votre compartiment.

Utiliser les extractions de plages d’octets

Avec l'en-tête HTTP Range dans une demande GetObject, vous pouvez extraire une plage d'octets d'un objet, en ne transférant que la portion spécifiée. Vous pouvez utiliser des connexions simultanées vers Amazon S3 pour extraire différentes plages d'octets depuis le même objet. Vous pouvez ainsi parvenir au regroupement de débits le plus élevé, par opposition à une seule demande d’objet entier. L’extraction des plages les plus petites d’un grand objet permet aussi à votre application d’améliorer l’intervalle des nouvelles tentatives quand les demandes sont interrompues. Pour plus d’informations, consultez Téléchargement d'objets.

Les tailles traditionnelles des demandes de plages d’octets sont de 8 Mo ou 16 Mo. Si les objets sont l’objet d’une opération PUT à l’aide d’un chargement en plusieurs parties, une bonne pratique consiste à les soumettre à une opération GET dans les mêmes tailles d’élément (ou au moins alignées sur les frontières d’élément) pour obtenir de meilleures performances. Les demandes GET peuvent directement adresser les éléments individuels ; par exemple,, GET ?partNumber=N.

Nouvelle tentative de demandes pour les applications sensibles à la latence

Les expirations et les nouvelles tentatives agressives permettent d’obtenir une latence cohérente. Étant donnée la large échelle d'Amazon S3, si la première demande est lente, une demande de nouvelle tentative est susceptible d'emprunter un chemin différent et de réussir rapidement. Les AWS SDK ont des valeurs de délai d'expiration et de nouvelle tentative configurables que vous pouvez ajuster en fonction des tolérances de votre application spécifique.

Combinez Amazon S3 (stockage) et Amazon EC2 (calcul) dans le même environnement Région AWS

Même si les noms de compartiment S3 sont globalement uniques, chaque compartiment est stocké dans une région que vous sélectionnez lorsque vous créez le compartiment. Pour optimiser les performances, nous vous recommandons d'accéder au compartiment à partir des instances Amazon EC2 de la même manière Région AWS lorsque cela est possible. Cela permet de réduire la latence réseau et les coûts de transfert des données.

Pour plus d’informations sur la tarification du transfert des données, consultez la Tarification Amazon S3.

Utiliser Amazon S3 Transfer Acceleration pour réduire la latence provoquée par la distance

Configuration de transferts de fichiers rapides et sécurisés à l'aide d'Amazon S3 Transfer Acceleration permet un transfert rapide, facile et sécurisé des fichiers sur des longues distances entre votre client et un compartiment S3. Transfer Acceleration tire parti des emplacements périphériques répartis dans le monde entier sur Amazon CloudFront. Lorsque les données arrivent dans un emplacement périphérique, elles sont transférées vers Amazon S3 sur un chemin de réseau optimisé. Transfer Acceleration convient parfaitement au transfert régulier de gigaoctets ou téraoctets de données d’un continent à l’autre. Il est aussi utile pour les clients qui chargent sur un compartiment centralisé depuis le monde entier.

Vous pouvez utiliser l'outil de comparaison de vitesse Amazon S3 Transfer Acceleration pour comparer les vitesses de chargement accéléré et non accéléré dans les régions Amazon S3. L'outil de comparaison de la vitesse utilise les chargements partitionnés pour transférer un fichier à partir de votre navigateur vers différentes régions Amazon S3 avec ou sans Amazon S3 Transfer Acceleration.

Utiliser la version la plus récente des kits SDK AWS

Les AWS SDK fournissent une prise en charge intégrée de nombreuses directives recommandées pour optimiser les performances d'Amazon S3. Les kits SDK fournissent une API plus simple pour tirer parti d'Amazon S3 depuis une application. Ils sont régulièrement mis à jour pour suivre les bonnes pratiques les plus récentes. Par exemple, les kits SDK incluent la logique permettant automatiquement une demande de nouvelle tentative sur les erreurs HTTP 503 et examinent le code pour répondre aux connexions lentes et s’y adapter.

Les kits SDK fournissent aussi Transfer Manager, qui automatise la mise à l'échelle horizontale des connexions pour traiter des milliers de demandes par seconde, à l'aide de demandes de plages d'octets si approprié. Il est important d'utiliser la dernière version des AWS SDK pour obtenir les dernières fonctionnalités d'optimisation des performances.

Vous pouvez aussi optimiser les performances lorsque vous utilisez les demandes d’API REST HTTP. Lors de l’utilisation de l’API REST, vous devez suivre les mêmes bonnes pratiques qui font partie des kits SDK. Autorisez les délais d’expiration et les nouvelles tentatives sur les demandes lentes, et multipliez les connexions pour autoriser l’extraction de données d’objet en parallèle. Pour plus d’informations sur l’utilisation de l’API REST, consultez la Référence d’API Amazon Simple Storage Service.