Maison  >  Article  >  Opération et maintenance  >  Comment résoudre le problème de l'utilisation élevée de l'espace Linux Swap

Comment résoudre le problème de l'utilisation élevée de l'espace Linux Swap

WBOY
WBOYavant
2023-05-27 12:37:262946parcourir

    Qu'est-ce que le swap ?

    L'espace de swap est une zone du disque, qui peut être une partition, un fichier ou une combinaison de ceux-ci.

    Pour faire simple, lorsque la mémoire physique du système est limitée, Linux enregistre les données rarement consultées dans la mémoire pour les échanger, afin que le système dispose de plus de mémoire physique pour servir chaque processus, et lorsque le système a besoin d'accéder au stockage sur échanger le contenu, puis charger les données du swap dans la mémoire. C'est ce que nous appelons souvent swap out et swap in.

    Pourquoi avons-nous besoin d'un échange ?

    Pour répondre à cette question, nous devons répondre aux avantages que l'échange nous apporte.

    Pour certaines applications volumineuses (telles que LibreOffice, éditeur vidéo, etc.), une grande quantité de mémoire sera utilisée lors du processus de démarrage, mais cette mémoire n'est souvent utilisée qu'au démarrage, et est rarement utilisée lors des opérations ultérieures. ces souvenirs. Avec le swap, le système peut sauvegarder cette partie des données de mémoire qui n'est pas utilisée de cette manière dans le swap, libérant ainsi davantage de mémoire physique que le système peut utiliser.

    La fonction d'hibernation de nombreuses distributions (telles que Ubuntu) repose sur la partition d'échange. Lorsque le système hiberne, les données en mémoire seront enregistrées dans la partition d'échange au prochain démarrage du système. la mémoire. , ce qui peut accélérer le démarrage du système, donc si vous souhaitez utiliser la fonction d'hibernation, vous devez configurer la partition d'échange et la taille doit être supérieure ou égale à la mémoire physique.

    Dans certains cas, la mémoire physique est limitée, mais que dois-je faire si je souhaite exécuter un programme gourmand en mémoire ? À l'heure actuelle, vous pouvez atteindre l'objectif en configurant suffisamment d'espace de swap. Bien qu'il soit un peu plus lent, il peut au moins fonctionner.

    Bien que la mémoire physique soit suffisante dans la plupart des cas, il y a toujours des situations inattendues, comme un processus nécessitant plus de mémoire que prévu, ou un processus ayant une fuite de mémoire, etc. Lorsque la mémoire n'est pas suffisante, le tueur MOO du noyau va être déclenché Selon la configuration du tueur de MOO, certains processus seront tués ou le système sera redémarré directement (la valeur par défaut est de tuer en premier le processus qui consomme le plus de mémoire. Cependant, avec swap, vous pouvez utiliser swap comme). mémoire. Bien que ce soit un peu lent, cela nous donne au moins la possibilité de déboguer, de tuer le processus ou de sauvegarder la progression du travail en cours.

    Si vous avez vu la gestion de la mémoire Linux, vous saurez que le système utilisera autant de mémoire libre que possible pour le cache afin d'accélérer la vitesse d'E/S du système, donc si vous pouvez déplacer les données de mémoire moins couramment utilisées pour les échanger , vous pouvez utiliser davantage de mémoire physique pour le cache, améliorant ainsi les performances globales du système.

    Inconvénients du swap ?

    Les avantages du swap ont été présentés ci-dessus, mais qu'en est-il des inconvénients du swap ? Le swap est stocké sur le disque. La vitesse du disque est plusieurs fois plus lente que celle de la mémoire. Si vous continuez à lire et à écrire du swap, cela aura certainement un impact sur les performances du système, en particulier lorsque le système est en cours d'exécution. la mémoire est très limitée. La fréquence d'apparition de l'espace d'échange sera très élevée, ce qui entraînera un fonctionnement très lent du système, comme s'il était mort. À ce stade, l'ajout de mémoire physique est la seule solution.

    Étant donné que le système déplacera automatiquement les données de mémoire rarement utilisées vers le swap, pour les programmes de bureau, cela peut provoquer une petite pause lorsque vous réduisez un programme puis l'ouvrez à nouveau, car les données du swap doivent être rechargées dans Entrez. mémoire.

    Faut-il échanger ?

    Ce qui précède présente ce qu'est le swap et ses avantages et inconvénients, devrions-nous donc configurer le swap ? La réponse est : cela dépend.

    Ce qui suit traite du choix du swap dans l'environnement de serveur et de bureau dans trois situations : mémoire insuffisante, à peine assez de mémoire et mémoire suffisante.

    Mémoire insuffisante

    Qu'il s'agisse d'un ordinateur de bureau ou d'un serveur, lorsque la mémoire physique n'est évidemment pas suffisante et que vous souhaitez exécuter le programme, ajouter du swap est la seule option plus lente que de ne pas fonctionner du tout.

    La mémoire est à peine suffisante

    Il est recommandé de configurer le swap, de sorte que le noyau déplace les données rarement utilisées de la mémoire vers le swap, disposant ainsi de plus de mémoire physique pour les appels système, améliorant les performances du système et évitant également les problèmes physiques occasionnels. Il ne suffit pas de provoquer une sortie anormale du processus et d'améliorer la stabilité du système. Cependant, pour le serveur, il est nécessaire de limiter ou de surveiller l'utilisation de l'espace de swap lorsque l'espace de swap est utilisé plus que prévu. /out est fréquent, des mesures doivent être prises à temps, sinon cela causera de graves dommages au système. Les performances ont un grand impact

    Beaucoup de mémoire

    Théoriquement, si la mémoire physique est suffisante et que la fonction d'hibernation n'est pas nécessaire. , alors le swap est inutile, mais le problème clé est qu'il nous est difficile de garantir que la mémoire physique est suffisante en toutes circonstances, car il y a toujours des situations inattendues, telles que certains processus consommant plus de mémoire que prévu, la pression du serveur dépassant celle prévue , fuites de mémoire, etc.

    Actuellement, nous manquons évidemment de mémoire. Quelle est la cause du manque de mémoire ? Pourquoi MySQL provoque-t-il directement un manque de mémoire sur le serveur ? Alors pourquoi un échange se produit-il sur notre serveur MySQL ?

    Supposons que notre mémoire physique soit de 16 Go et que notre swap soit de 4 Go. Si MySQL lui-même occupe déjà 12 Go de mémoire physique et qu'en même temps d'autres programmes ou modules système nécessitent 6 Go de mémoire, le système d'exploitation peut alors mapper une partie de l'espace d'adressage appartenant à MySQL pour l'échanger.

    Pour parler franchement, le système pense que l'espace occupé par votre MySQL est trop grand et ne vous permet pas de faire des choses spéciales. Il doit laisser de la place à d'autres de mes zones de processus nécessaires pour utiliser la mémoire, vous devriez donc accéder à un. échange plus lent pour jouer !

    Le plus grand occupant de mémoire dans MySQL est innodb_buffer_pool_size, vous devriez donc vous demander si cette valeur est définie de manière déraisonnable la première fois ?

    La consommation de mémoire de MySQL est divisée en :

    • 1. Consommation de mémoire au niveau de la session : comme sort_buffer_size, etc. Chaque session ouvrira un sort_buffer_size pour les opérations de tri

    • 2. : innodb_buffer_pool_size, etc., segments de mémoire partagés globalement

    C'est là que je pense que notre DBA n'est pas professionnel. Nous n'avons pas envisagé la première situation pour vérifier la consommation de mémoire au niveau de la session, mais m'avons directement dit de l'ajuster. innodb_buffer_pool_size

    Que cache le pool de tampons d'InnoDB ? A quoi ça sert ? Quel est le réglage approprié ?

    Cache les données de table et les données d'index, charge les données sur le disque dans le pool de mémoire tampon, évite les E/S disque pour chaque accès et accélère l'accès.

    Les performances de concurrence de MySQL sont directement proportionnelles à la taille de la mémoire allouée par le pool de tampons. Plus la mémoire allouée est grande, meilleures sont ses performances de concurrence. Les 99 % de la mémoire de la machine doivent-ils être alloués au pool de tampons ?

    Bien sûr que non ! Sans oublier que le noyau du système d'exploitation nécessite également plusieurs gigaoctets de mémoire, en plus du Buffer Pool, MySQL possède également de nombreuses autres structures de données en mémoire. Celles-ci nécessitent toutes de la mémoire, donc l'idée ci-dessus n'est certainement pas réalisable !

    Un ratio plus raisonnable devrait être que la taille de la mémoire du Buffer Pool représente 50 % à 60 % de la mémoire totale de la machine.

    Vous pouvez vérifier l'état des hits via show engine innodb statusG;. Lorsque le taux de réussite n'atteint pas plus de 97%, vous pouvez envisager d'ajouter de la mémoire. Bien sûr, cela est également lié à l'entreprise. a une grande quantité d'écritures et peu de lectures, c'est un cas particulier.

    S'il n'atteint pas plus de 97% dans les autres cas, et s'il y a beaucoup de lectures, s'il n'atteint pas plus de 98%, cela signifie que le tampon n'est pas suffisant. D'un autre côté, si 20 % des accès mémoire sont alloués, cela peut être atteint à 100 %, et il y a beaucoup de pages libres, donc cela signifie. c'est suffisant. Vous pouvez également calculer en fonction des pages libres pour réduire un peu de mémoire. N'utilisez pas cette mémoire tant qu'elle n'est pas utilisée

    .

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer