web-dev-qa-db-fra.com

Amazon RDS manque de mémoire libre. Devrais-je m'inquiéter?

J'ai une instance Amazon RDS. La mémoire libérable a diminué depuis l'installation sur une à deux semaines, passant de 15 Go de mémoire à environ 250 Mo. Comme il a baissé aussi bas ces derniers jours, il a commencé à ressembler à un motif en dents de scie où la mémoire libre peut tomber dans cette plage (250 à 350 Mo), puis remonte jusqu'à 500 à 600 Mo dans un motif en dents de scie.

Il n'y a pas eu de baisse notable de la qualité des applications. Cependant, je crains que la base de données ne manque de mémoire et ne plante.

Y a-t-il un risque que l'instance RDS manque de mémoire? Existe-t-il un paramètre ou un paramètre que je devrais examiner pour déterminer si l'instance est correctement configurée? Quelle est la cause de ce motif en dents de scie?

Freeable Memory Declining

54
william tell

Le champ de mémoire libre est utilisé par MySQL pour la mise en mémoire tampon et la mise en cache de ses propres processus. Il est normal que la quantité de mémoire libre diminue avec le temps. Je ne serais pas inquiet que cela détruise les anciennes informations car cela demande plus de place.

43
Larry McKenzie

Réponse courte - vous ne devriez pas vous soucier de FreeableMemory à moins qu'il ne devienne vraiment bas (environ 100-200 Mo) ou qu'un échange significatif se produise (voir la métrique RDS SwapUsage).

FreeableMemory n'est pas une métrique MySQL, mais une métrique du système d'exploitation. Il est difficile de donner une définition précise, mais vous pouvez le traiter comme de la mémoire que le système d'exploitation pourra allouer à toute personne qui le demandera (dans votre cas, ce sera probablement MySQL). MySQL a un ensemble de paramètres qui restreignent son utilisation globale de la mémoire à un certain plafond (vous pouvez utiliser quelque chose comme this pour le calculer réellement). Il est peu probable que votre instance atteigne cette limite, car en général, vous n'atteignez jamais le nombre maximal de connexions, mais cela est toujours possible.

Revenons maintenant au "déclin" de la métrique FreeableMemory. Pour MySQL, la majeure partie de la mémoire est consommée par le pool de mémoire tampon InnoDB (voir ici pour plus de détails). Les instances RDS dans la configuration par défaut ont une taille pour ce tampon définie à 75% de la mémoire physique des hôtes - ce qui dans votre cas est d'environ 12 Go. Ce tampon est utilisé pour mettre en cache toutes les données de base de données utilisées dans les opérations de lecture et d'écriture. Donc, dans votre cas, puisque ce tampon est vraiment gros - il se remplit lentement de données qui sont mises en cache (il est probable que ce tampon est en fait assez grand pour mettre en cache toutes les bases de données). Ainsi, lorsque vous démarrez votre instance pour la première fois, ce tampon est vide et qu'une fois que vous commencez à lire/écrire des choses dans la base de données, toutes ces données sont mises en cache. Ils resteront ici jusqu'à ce que ce cache soit plein et qu'une nouvelle demande arrive. À l'heure actuelle, les données les moins récemment utilisées seront remplacées par de nouvelles données. Ainsi, le déclin initial de FreeableMemory après le redémarrage de l'instance de base de données explique ce fait. Ce n'est pas une mauvaise chose, car vous voulez en fait autant que possible que vos données soient mises en cache pour que votre base de données fonctionne plus rapidement. La seule chose qui peut devenir désagréable, c'est quand une partie ou la totalité de ce tampon sera poussé hors de la mémoire physique en échange. À ce stade, vous aurez une énorme baisse de performances.

À titre préventif, il peut être judicieux de régler la mémoire maximale MySQL utilisée pour autre chose au cas où la métrique FreeableMemory est constamment à un niveau de 100-200 Mo, juste pour réduire la possibilité de permutation.

44
Dmitry

Après plusieurs tickets de support chez AWS, j'ai trouvé que le réglage des groupes de paramètres peut aider, en particulier le tampon partagé, en les abaissant pour garder une quantité réservée pour éviter les chutes ou les basculements en raison d'un manque de mémoire

1
Rovel