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 :
Accédez à la console RDS → Votre cluster illimité
Sélectionnez l'onglet « Performances Insights »
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é
LOADBALANCEHOSTSPour 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 :
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.
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