2017-07-18 5 views
1

J'ai une base de données qui s'exécute sur la plate-forme Amazons RDS et elle ne semble pas utiliser toute la quantité de mémoire disponible.Mémoire AWS RDS Problème

Le type d'instance est db.m4.xlarge, cela devrait me donner 16 GiB de mémoire, mais quand je regarde la page de surveillance, il montre que j'atteins le seuil avec une valeur actuelle de 2460 Mo.

Screenshot of AWS RDS monitoring page

Quand je regarde le db-paramètre-groupe, il montre que le innodb_buffer_pool_size devrait être le 3/4 du DBinstanceClassMemory mais quand je vérifie l'ensemble de la valeur réelle (en vous connectant à la db et en cours d'exécution show global variables) est-il défini comme 12465471488 (je suppose qu'il s'agit d'octets?)

Est-ce que quelqu'un sait pourquoi c'est et quelles options je dois définir pour que l'instance RDS profite pleinement de la mémoire disponible?

+0

Je ne trouve pas de référence pour le moment et je n'ai pas de réponse à votre question spécifique, mais je tenais à noter que vos opérations db n'obtiennent pas la quantité totale de mémoire que l'instance type spécifie. Si le type d'instance spécifie 16 Go de mémoire, plusieurs de ces concerts vont à l'instance EC2 sous-jacente. Je n'imagine pas que cela réduirait 16gb à 2.5gb bien, donc il y a probablement une raison différente pour cela, mais je pensais que je partagerais cela. – Brooks

+0

@Brooks non, pas plusieurs concerts. Probablement plus proche de la plage de 256 à 512 MiB. L'instance ne fait rien d'autre que d'exécuter la base de données. –

+0

Je suis corrigé - aurait été utile si j'avais pu trouver la documentation ...! Merci pour la correction! – Brooks

Répondre

3

Le numéro affiché dans la console est libre mémoire - mémoire non utilisée. C'est sans doute contre-intuitif, mais c'est ce qui est montré, ici. Notez que le petit graphique à barres adjacent au numéro est pour la plupart plein, et pas principalement vide.

+1

L'équipe de surveillance doit sortir une feuille du livre de l'équipe de facturation –

+0

oui vous avez raison. Merci de votre aide. Une façon de confirmer que c'était de redémarrer l'instance et ensuite la mémoire complète était disponible mais elle est ensuite redescendue à la valeur précédente. Est-ce que cela signifie essentiellement que l'instance devrait être plus grande ou que j'ai besoin de supprimer des index (si possible) pour libérer de la mémoire? – SamBremner

+0

Tant que le système est stable dans le temps, 2,5G de mémoire libre devrait être plus que suffisant. La plus grande partie de la mémoire utilisée par MySQL (dans une configuration correcte) est utilisée par InnoDB Buffer Pool, qui, une fois revendiquée en chargeant des données à partir du disque, n'est jamais libérée, de par sa conception. Il ne serait pas logique de libérer cette mémoire, car avoir des données en mémoire (évitant l'accès au disque) est une optimisation majeure. Si le total des données + index dépasse la taille du pool de mémoire tampon, un algorithme moins récent expulsera les anciennes pages, pour faire de l'espace, si une requête appelle des données qui ne sont pas dans le pool avec utilisation totale de la mémoire. –