Un taux élevé d’utilisation de la mémoire dans Azure Database pour PostgreSQL - Serveur flexible
S’APPLIQUE À : Azure Database pour PostgreSQL : serveur flexible
Cet article présente des scénarios courants et des causes racines susceptibles d’entraîner une utilisation élevée de la mémoire dans le serveur flexible Azure Database pour PostgreSQL.
Dans cet article, vous apprenez :
- À propos des guides de résolution des problèmes pour identifier et obtenir des recommandations afin d’atténuer les causes racines.
- Outils permettant d’identifier l’utilisation élevée de la mémoire.
- Causes de la mémoire haute et actions correctives.
Guides de résolution des problèmes
À l’aide des guides de résolution des problèmes de fonctionnalités, disponibles sur le portail du serveur flexible Azure Database pour PostgreSQL, la probable cause racine et les recommandations pour atténuer le scénario d’utilisation élevée de la mémoire sont disponibles. Pour savoir comment configurer les guides de résolution des problèmes, consultez Configurer des guides de résolution des problèmes.
Outils permettant d’identifier un taux élevé d’utilisation de la mémoire
Tenez compte des outils suivants pour identifier l’utilisation élevée de la mémoire.
Métriques Azure
Utilisez les métriques Azure pour surveiller le pourcentage de mémoire en cours d’utilisation pour la date et l’heure définies.
Pour une surveillance proactive, configurez des alertes sur les métriques. Pour obtenir des instructions pas à pas, consultez Métriques Azure.
Magasin des requêtes
Le Magasin des requêtes capture automatiquement l’historique des requêtes et leurs statistiques d’exécution, et les conserve pour que vous les passiez en revue.
Magasin des requêtes pouvez mettre en corrélation les informations d’événement d’attente avec les statistiques d’exécution des requêtes. Utilisez Magasin des requêtes pour identifier les requêtes qui ont une consommation élevée de mémoire pendant la période d’intérêt.
Pour plus d’informations sur la configuration et l’utilisation de Magasin des requêtes, consultez Magasin des requêtes.
Raisons et actions correctives
Tenez compte des raisons suivantes et des actions correctives pour la résolution d’un taux élevé d’utilisation de la mémoire.
Paramètres de serveur
Les paramètres de serveur suivants ont un impact sur la consommation de mémoire et doivent être examinés :
Work_Mem
Ce paramètre work_mem
spécifie la quantité de mémoire à utiliser par les opérations de tri internes et les tables de hachage avant d’écrire dans des fichiers des disques temporaires. Il n’est pas basé sur une requête plutôt, il est défini en fonction du nombre d’opérations de tri et de hachage.
Si la charge de travail comporte de nombreuses requêtes en court-exécution avec des jointures simples et des opérations de tri minimales, il est recommandé de réduire work_mem
. S’il existe quelques requêtes actives avec des jointures et des tris complexes, il est recommandé de définir une valeur plus élevée pour work_mem.
Il est difficile d’obtenir une valeur exacte de work_mem
. Si vous remarquez un taux élevé d’utilisation de la mémoire ou des problèmes de mémoire insuffisante, envisagez de diminuer work_mem
.
Un paramètre plus sûr pour work_mem
est work_mem = Total RAM / Max_Connections / 16
La valeur par défaut de work_mem
est 4 Mo. Vous pouvez définir la valeur work_mem
sur plusieurs niveaux, y compris au niveau du serveur via la page paramètres de la portail Azure.
Une bonne stratégie consiste à surveiller la consommation de mémoire pendant les heures de pointe.
Si, pendant ce temps, des tris de disque se produisent et qu’il y a beaucoup de mémoire inutilisée, augmentez work_mem
progressivement jusqu’à ce que vous puissiez atteindre un bon équilibre entre la mémoire disponible et la mémoire utilisée de la même façon, si l’utilisation de la mémoire semble élevée, réduisez work_mem
.
Maintenance_Work_Mem
maintenance_work_mem
est destiné aux tâches de maintenance telles que le nettoyage, l’ajout d’index ou de clés étrangères. L’utilisation de la mémoire dans ce scénario est par session.
Par exemple, considérez un scénario dans lequel trois Workers de nettoyage automatique s’exécutent.
Si la valeur maintenance_work_mem
est de 1 Go, toutes les sessions combinées utilisent 3 Go de mémoire.
Une valeur élevée maintenance_work_mem
, ainsi que plusieurs sessions en cours d’exécution pour le nettoyage/la création d’index/l’ajout de clés étrangères, peuvent entraîner un taux élevé d’utilisation de la mémoire. La valeur maximale autorisée pour le paramètre de serveur maintenance_work_mem
dans Azure Database pour le serveur flexible PostgreSQL est de 2 Go.
Mémoires tampons partagées
Le paramètre shared_buffers
détermine la quantité de mémoire dédiée au serveur pour la mise en cache des données. L’objectif des mémoires tampons partagées est de réduire les E/S DISQUE.
Un paramètre raisonnable pour les mémoires tampons partagées est de 25 % de la RAM. La définition d’une valeur supérieure à 40 % de la RAM n’est pas recommandée pour les charges de travail les plus courantes.
Nombre maximal de connexions
Toutes les connexions nouvelles et inactives sur une base de données serveur flexible Azure Database pour PostgreSQL consomment jusqu’à 2 Mo de mémoire. Une façon de surveiller les connexions consiste à utiliser la requête suivante :
select count(*) from pg_stat_activity;
Lorsque le nombre de connexions à une base de données est élevé, la consommation de mémoire augmente également.
Dans les situations où il existe beaucoup de connexions de base de données, envisagez d’utiliser un pool de connexions comme PgBouncer.
Pour plus d’informations sur PgBouncer, consultez :
Azure Database pour PostgreSQL – Serveur flexible offre PgBouncer comme solution de regroupement de connexions intégrée. Pour plus d’informations, consultez la section PgBouncer.
Expliquer l’analyse
Une fois que les requêtes grandes consommatrices de mémoire ont été identifiées à partir du Magasin des requêtes, utilisez EXPLAIN et EXPLAIN ANALYZE pour les examiner plus en détail et les régler.
Pour plus d’informations sur la commande EXPLAIN, passez en revue EXPLAIN PLAN.