View a markdown version of this page

Instance-specific surveillance des performances et des ressources - Amazon Aurora

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.

Instance-specific surveillance des performances et des ressources

La surveillance au niveau de l'instance est essentielle pour comprendre l'asymétrie de connexion, l'asymétrie de la charge de travail et l'asymétrie des données, ainsi que pour savoir quand ajouter des routeurs ou fractionner des partitions pour augmenter le débit tout en conservant la latence.

Vue d’ensemble

Lorsque votre application émet une requête sur la base de données Amazon Aurora PostgreSQL Limitless, cette demande traverse un système distribué sophistiqué avant de renvoyer des résultats. Une solution apparemment simple SELECT Une instruction peut toucher plusieurs instances de base de données, chacune jouant un rôle distinct dans le traitement de votre demande. Comprendre ce processus, ainsi que les instances qui le sous-tendent, transforme la façon dont vous concevez des applications, interprétez les données de surveillance et diagnostiquez les problèmes de performances.

Ce guide fournit des informations techniques détaillées sur l'architecture d'instance de base de données Aurora PostgreSQL Limitless :

  • Rafraîchissement de l'architecture Limitless, routeur et fragments

  • Quand et comment adapter chaque type d'instance à vos exigences en matière de performances et de capacité

  • Comment surveiller, dépanner et optimiser les performances au niveau de l'instance

  • Meilleures pratiques pour la conception d'applications qui exploitent efficacement l'architecture distribuée

Principes fondamentaux de l'architecture des instances

La base de données Aurora PostgreSQL Limitless offre une évolutivité horizontale grâce à une séparation fonctionnelle entre deux types d'instances spécialisés :

  • Instances de routeur fournissent la couche d'orchestration : ils acceptent les connexions clients, analysent les requêtes, coordonnent les opérations distribuées et regroupent les résultats. Les routeurs sont sans état, ce qui signifie qu'ils ne stockent pas de données et peuvent être ajoutés ou supprimés sans migration de données.

  • Instances de partition fournissent les données et la couche de calcul : ils stockent les données des tables, exécutent des requêtes sur les données locales et gèrent les transactions. Les partitions sont dotées d'un état, chacune possédant un sous-ensemble spécifique de vos données déterminé par un hachage cohérent.

Cette séparation permet à la base de données Aurora PostgreSQL Limitless d'adapter la gestion des connexions, la coordination des requêtes et le stockage des données indépendamment en fonction des caractéristiques de votre charge de travail.

Comparaison des routeurs et des partitions

Caractéristiques Instances de routeur Instances de partition
Rôle principal Coordination et distribution des requêtes Stockage des données et exécution des requêtes
State Apatride (pas de stockage de données) Stateful (possède les données)
Capacité de mise à l’échelle Add/remove instantanément Nécessite un rééquilibrage des données
Priorité aux ressources Processeur pour la coordination ; mémoire modérée Processeur pour les requêtes ; mémoire élevée pour le cache
Trigger de mise Nombre de connexions élevé, débit txn distribué Processeur, volume de données et débit de requêtes élevés

Surveillance des performances d'instance

Il est essentiel de comprendre les performances au niveau de l'instance pour exploiter efficacement la base de données Aurora PostgreSQL Limitless. Instance-specific la surveillance révèle les modèles de distribution qui ont un impact sur les performances : asymétrie de connexion, asymétrie de charge de travail et asymétrie des données.

Détection du biais

Dans un déploiement idéal de base de données Aurora PostgreSQL Limitless, la charge de travail et les ressources sont réparties uniformément entre les instances. Dans la pratique, les applications présentent souvent une distribution asymétrique, qui concentre la charge sur des instances spécifiques.

Trois types de biais à surveiller :

  • Asymétrie de connexion: Répartition inégale des connexions client entre les routeurs

  • Ajustement de la charge de travail: charge de requête inégale entre les partitions en raison des touches de raccourci

  • Asymétrie des données: volume de données inégal entre les partitions en raison de la fréquence des touches des partitions

Distribution de charge de Database Insights

Le moyen le plus rapide d'évaluer l'état de santé au niveau de l'instance est la vue de répartition de la charge de Database Insights, qui fournit une visibilité immédiate sur la façon dont les sessions actives se répartissent entre les instances.

Pour accéder à Load Distribution :

  1. Accédez à la console RDS → Votre cluster illimité

  2. Sélectionnez l'onglet « Performances Insights »

  3. Cliquez sur la section « Distribution de charge »

Schéma sain : Charge répartie de manière relativement uniforme entre les instances

  • Les routeurs peuvent afficher un AAS légèrement supérieur à celui des shards (surcharge de coordination)

  • Les valeurs Shard AAS situées à moins de 20 % les unes des autres indiquent un bon équilibre

En ce qui concerne le schéma : Concentration significative sur des cas spécifiques

  • Un routeur avec > 70 % de la charge du routeur → Désymétrie de connexion

  • Une partition avec > 50 % de la charge de partition → Charge de travail ou asymétrie des données

  • Grand écart entre les partitions → Étudier la distribution des clés des partitions

CloudWatch indicateurs

Pour une analyse plus approfondie allant au-delà de Database Insights, CloudWatch fournit des mesures spécifiques à l'instance qui révèlent les modèles d'utilisation des ressources.

Le ServerlessDatabaseCapacity métrique avec dimension DBShardGroupInstance affiche la consommation d'ACU par instance, fournissant ainsi la vue la plus directe de l'utilisation des ressources.

Quand faire enquête :

  • Variance de l'ACU du routeur > 30 % → Asymétrie de connexion ou concentration de charge de travail entre les fragments

  • Écart ACU des partitions > 40 % → Asymétrie des données ou de la charge de travail

  • Toutes les instances sont constamment à l'ACU maximum → Contrainte de capacité

Surveillance et dépannage des routeurs

Les routeurs peuvent rencontrer des problèmes de performances dus à deux causes principales : une distribution inégale des connexions et une concentration de la charge de travail entre les fragments.

Sessions réparties de manière inégale

Symptôme : Un routeur gère une part disproportionnée de connexions

Cause fondamentale : La mise en cache DNS entraîne la résolution de plusieurs demandes de connexion vers le même point de terminaison du routeur.

Plus fréquent pendant :

  • Analyse comparative avec des outils tels que pgbench

  • Initialisation du pool de connexions (de nombreuses connexions sont établies rapidement)

  • Redémarrage du serveur d'applications

Remèdes :

  • Assurez-vous d'utiliser le point de terminaison Limitless spécifié dans la console

  • Équilibrage manuel : extrayez les points de terminaison du routeur et connectez différentes applications à différents routeurs

  • Pour les applications libpq, utilisez la fonctionnalité LOADBALANCEHOSTS

  • Pour les applications JDBC, utilisez le plug-in de connexion Limitless

  • Utiliser un NLB pour gérer les sessions et les distributions

Surveillance et dépannage des partitions

Les partitions rencontrent des problèmes de performances dus à trois causes principales : contraintes de ressources, distorsion des données et distorsion de la charge de travail.

Utilisation des ressources des partitions

Un fragment avec des clés de partition populaires contiendra plus de données et des charges de travail plus élevées. Cela se traduit par une utilisation des ressources, c'est-à-dire que l'instance consommera plus d'ACU.

Stratégies de remédiation :

  1. Re-assess sélection de la clé de partition : Passez en revue la cardinalité des partitions et les modèles d'accès. Envisagez des clés de partition composites pour une meilleure distribution.

  2. Divisez le fragment : Répartissez la charge sur un plus grand nombre d'instances de partition

Quand fractionner les fragments :

  • Un seul fragment constamment à > 80 % d'ACU maximum

  • Débit de requêtes limité par la capacité d'un seul fragment

Volumes de données Shard

Utilisez les fonctions SQL de la base de données illimitée Aurora PostgreSQL pour interroger des volumes de données :

SELECT subcluster_id, subcluster_type, pg_size_pretty(db_size) FROM rds_aurora.limitless_stat_database_size('postgres_limitless') ORDER BY 1;

Pour afficher les données par table et par fragment, procédez comme suit :

SELECT * FROM rds_aurora.limitless_stat_relation_sizes('public', 'table_name');

Résoudre les inégalités d'utilisation

Lorsque la charge de travail ou l'asymétrie des données se concentrent sur des partitions spécifiques, le fractionnement des partitions redistribue la charge sur un plus grand nombre d'instances.

Considérations importantes :

  • Les touches de fragment à déplacer ne peuvent pas être contrôlées

  • Il n'est pas possible d'annuler un fractionnement sans revenir à un instantané manuel pris avant le fractionnement.

  • Toutes les instances, y compris une nouvelle partition, consomment l'ACU minimum d'instance lorsqu'elles sont inactives

Le fractionnement des fragments permet une mise à l'échelle accrue, et le fractionnement consécutif des fragments permet d'augmenter le débit et de poursuivre la mise à l'échelle, tout en conservant une faible latence.

Limitations

Tenez compte de ces contraintes opérationnelles :

Limites du routeur :

  • Les routeurs ne peuvent pas être supprimés - Une fois ajoutés, les routeurs restent dans le cluster

  • Planifiez soigneusement l'ajout de routeurs pour éviter des coûts de base inutiles

Limites des partitions :

  • Les fragments ne peuvent pas être fusionnés - Les divisions de fragments sont des opérations à sens unique

  • Seule option de restauration : restauration à partir d'un instantané pris avant le fractionnement

Stratégies d'atténuation :

  • Commencez avec un nombre minimum d'instances viables

  • Ajoutez de la capacité de manière incrémentielle selon les besoins

  • Prenez des instantanés avant les modifications majeures de topologie

  • Surveillez les coûts de référence à mesure que le cluster se développe