Solution 1 :
C'est parfaitement normal.
Au démarrage du système, un certain nombre de services démarrent. Ces services s'initialisent, lisent les fichiers de configuration, créent des structures de données, etc. Ils utilisent un peu de mémoire. Beaucoup de ces services ne fonctionneront plus pendant toute la durée de fonctionnement du système car vous ne les utilisez pas. Certains d'entre eux peuvent durer des heures, des jours ou des semaines. Pourtant, toutes ces données sont en mémoire physique.
Bien sûr, le système ne peut pas jeter ces données. Il ne peut pas prouver qu'il ne sera littéralement jamais accessible. L'un de ces services, par exemple, peut être celui qui vous permet d'accéder à distance à la box. Vous ne l'avez peut-être pas utilisé depuis une semaine, mais si vous l'utilisez, cela fonctionnera mieux.
Mais le système sait qu'il aimerait peut-être utiliser cette mémoire physique pour des choses comme un cache disque ou d'autres manières qui amélioreront les performances. Il s'agit donc d'un échange opportuniste. Lorsqu'il n'a rien de mieux à faire, il écrit sur le disque les données qui n'ont pas été utilisées depuis très longtemps, en utilisant l'espace de swap. Cependant, il conserve toujours les pages en mémoire physique. Ils sont donc toujours accessibles sans avoir à les échanger.
Maintenant, si le système a besoin ultérieurement de cette mémoire physique pour autre chose, il peut simplement jeter ces pages car il les a déjà écrites pour les échanger. Cela donne au système le meilleur des deux mondes. Les données sont toujours conservées en mémoire, elles sont donc accessibles sans avoir à les lire sur le disque. Mais si le système a besoin de cette mémoire à d'autres fins, il n'aura pas à l'écrire d'abord. Grande victoire tout autour.
Solution 2 :
Cela peut se produire si, à un moment donné, vous avez eu besoin de plus de mémoire que la RAM physique de la machine. À ce moment-là, certaines données auront été écrites dans l'espace d'échange.
Lorsque la mémoire est libérée ultérieurement, les données du swap ne sont pas automatiquement relues dans la RAM :cela ne se produit que lorsque les données du swap sont réellement nécessaires à un processus. C'est parfaitement normal.
Quant à votre processus mysql :tout dépend du type de requêtes que vous exécutez. En théorie 2 requêtes très complexes pourraient probablement suffire pour obtenir une telle charge, quel que soit votre nombre d'utilisateurs. Vous pouvez activer le journal des requêtes lentes pour obtenir plus d'informations sur les requêtes gourmandes en charge.
Solution 3 :
Vous pouvez également modifier ce comportement par sysctl -w vm.swappiness=10
, ce qui réduira considérablement l'utilisation du swap jusqu'à ce qu'il soit réellement nécessaire.
En ce qui concerne MySQL, avez-vous au moins effectué un test de configuration de base à l'aide du script tuning-primer.sh ?