Rechercher

5.13. Dépannage en cas d'utilisation élevée de la mémoire

download PDF

Les scénarios suivants peuvent entraîner une utilisation élevée de la mémoire :

  • Le processus pmproxy est occupé à traiter de nouvelles archives PCP et n'a pas de cycles de CPU disponibles pour traiter les requêtes et les réponses Redis.
  • Le nœud ou le cluster Redis est surchargé et ne peut pas traiter les demandes entrantes à temps.

Le démon de service pmproxy utilise les flux Redis et prend en charge les paramètres de configuration, qui sont des paramètres de réglage PCP et affectent l'utilisation de la mémoire Redis et la conservation des clés. Le fichier /etc/pcp/pmproxy/pmproxy.conf répertorie les options de configuration disponibles pour pmproxy et les API associées.

La procédure suivante décrit comment résoudre un problème d'utilisation élevée de la mémoire.

Conditions préalables

  1. Installez le paquetage pcp-pmda-redis:

    # dnf install pcp-pmda-redis
  2. Installez le PMDA redis :

    # cd /var/lib/pcp/pmdas/redis && ./Install

Procédure

  • Pour résoudre un problème d'utilisation élevée de la mémoire, exécutez la commande suivante et observez la colonne inflight:

    $ pmrep :pmproxy
             backlog  inflight  reqs/s  resp/s   wait req err  resp err  changed  throttled
              byte     count   count/s  count/s  s/s  count/s   count/s  count/s   count/s
    14:59:08   0         0       N/A       N/A   N/A    N/A      N/A      N/A        N/A
    14:59:09   0         0    2268.9    2268.9    28     0        0       2.0        4.0
    14:59:10   0         0       0.0       0.0     0     0        0       0.0        0.0
    14:59:11   0         0       0.0       0.0     0     0        0       0.0        0.0

    Cette colonne indique le nombre de requêtes Redis en cours, ce qui signifie qu'elles sont en file d'attente ou envoyées et qu'aucune réponse n'a été reçue jusqu'à présent.

    Un nombre élevé indique l'une des conditions suivantes :

    • Le processus pmproxy est occupé à traiter de nouvelles archives PCP et n'a pas de cycles de CPU disponibles pour traiter les requêtes et les réponses Redis.
    • Le nœud ou le cluster Redis est surchargé et ne peut pas traiter les demandes entrantes à temps.
  • Pour résoudre le problème de l'utilisation élevée de la mémoire, réduisez le nombre de processus pmlogger pour cette ferme et ajoutez une autre ferme pmlogger. Utilisez la configuration fédérée - plusieurs fermes pmlogger.

    Si le nœud Redis utilise 100 PU pendant une période prolongée, déplacez-le vers un hôte plus performant ou utilisez plutôt une configuration Redis en grappe.

  • Pour afficher les paramètres de pmproxy.redis.*, utilisez la commande suivante :

    $ pminfo -ftd pmproxy.redis
    pmproxy.redis.responses.wait [wait time for responses]
        Data Type: 64-bit unsigned int  InDom: PM_INDOM_NULL 0xffffffff
        Semantics: counter  Units: microsec
        value 546028367374
    pmproxy.redis.responses.error [number of error responses]
        Data Type: 64-bit unsigned int  InDom: PM_INDOM_NULL 0xffffffff
        Semantics: counter  Units: count
        value 1164
    [...]
    pmproxy.redis.requests.inflight.bytes [bytes allocated for inflight requests]
        Data Type: 64-bit int  InDom: PM_INDOM_NULL 0xffffffff
        Semantics: discrete  Units: byte
        value 0
    
    pmproxy.redis.requests.inflight.total [inflight requests]
        Data Type: 64-bit unsigned int  InDom: PM_INDOM_NULL 0xffffffff
        Semantics: discrete  Units: count
        value 0
    [...]

    Pour connaître le nombre de requêtes Redis en cours, consultez les métriques pmproxy.redis.requests.inflight.total et pmproxy.redis.requests.inflight.bytes pour savoir combien d'octets sont occupés par toutes les requêtes Redis en cours.

    En général, la file d'attente des requêtes redis est nulle, mais elle peut s'allonger en fonction de l'utilisation des grandes fermes pmlogger, ce qui limite l'évolutivité et peut entraîner des temps de latence élevés pour les clients pmproxy.

  • Utilisez la commande pminfo pour afficher des informations sur les mesures de performance. Par exemple, pour afficher les mesures de redis.*, utilisez la commande suivante :

    $ pminfo -ftd redis
    redis.redis_build_id [Build ID]
        Data Type: string  InDom: 24.0 0x6000000
        Semantics: discrete  Units: count
        inst [0 or "localhost:6379"] value "87e335e57cffa755"
    redis.total_commands_processed [Total number of commands processed by the server]
        Data Type: 64-bit unsigned int  InDom: 24.0 0x6000000
        Semantics: counter  Units: count
        inst [0 or "localhost:6379"] value 595627069
    [...]
    
    redis.used_memory_peak [Peak memory consumed by Redis (in bytes)]
        Data Type: 32-bit unsigned int  InDom: 24.0 0x6000000
        Semantics: instant  Units: count
        inst [0 or "localhost:6379"] value 572234920
    [...]

    Pour connaître l'utilisation maximale de la mémoire, consultez la métrique redis.used_memory_peak.

Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.