Mysql tuner rapporte que mySQL peut utiliser 166% de la RAM installée, comment puis-je limiter l'utilisation de la RAM ?
[Utilisation maximale possible de la mémoire : 426.8M (166% de la RAM installée)
Mysql tuner rapporte que mySQL peut utiliser 166% de la RAM installée, comment puis-je limiter l'utilisation de la RAM ?
[Utilisation maximale possible de la mémoire : 426.8M (166% de la RAM installée)
Vous pouvez soit configurer
Avant d'allouer de la mémoire à l'un ou l'autre des moteurs, il est bon de réfléchir à la mise en cache qui va de pair avec chaque moteur de stockage.
Le principal mécanisme utilisé est le cache des clés. Il ne met en cache que les pages d'index des fichiers .MYI. Pour dimensionner votre cache de clés, exécutez la requête suivante :
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql')) AA ) A,
(SELECT 2 PowerOf1024) B;
Cela donnera le paramètre recommandé pour le cache des clés MyISAM ( taille_du_buffer_clé ) compte tenu de votre ensemble de données actuel ( la requête plafonnera la recommandation à 4G (4096M). Pour les systèmes d'exploitation 32 bits, la limite est de 4 Go. Pour les systèmes 64 bits, 8 Go.
Le principal mécanisme utilisé est le buffer Pool InnoDB. Il met en cache les pages de données et d'index des tables InnoDB auxquelles on accède. Pour dimensionner votre buffer Pool InnoDB, exécutez la requête suivante :
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;
Cela donnera le paramètre recommandé pour la taille du pool tampon InnoDB ( innodb_buffer_pool_size ) compte tenu de votre ensemble de données actuel.
N'oubliez pas de redimensionner les fichiers journaux InnoDB (ib_logfile0 et ib_logfile1). Le code source de MySQL impose un plafond pour la taille combinée de tous les fichiers journaux InnoDB, qui doit être < 4G (4096M). (NOTE : Les binaires du serveur Percona dépassent cette limite. J'ai récemment configuré un grand serveur DB avec 4G pour un seul fichier journal InnoDB en utilisant innodb_log_file_size )
Pour simplifier, si l'on considère deux fichiers journaux, voici comment les dimensionner :
À la fin des deux requêtes, il y a une requête en ligne : (SELECT 2 PowerOfTwo) B
(SELECT 0 PowerOf1024)
donne le paramètre en octets(SELECT 1 PowerOf1024)
donne le paramètre en Kilo-octets(SELECT 2 PowerOf1024)
donne le paramètre en mégaoctets(SELECT 3 PowerOf1024)
donne le paramètre en gigaoctetsIl n'y a pas de substitut au bon sens. Si vous disposez d'une mémoire limitée, d'un mélange de moteurs de stockage ou d'une combinaison des deux, vous devrez vous adapter à différents scénarios.
Si vous avez 2GB de RAM et 16GB d'InnoDB, allouez 512M comme innodb_buffer_pool_size
.
Si vous avez 2GB de RAM et 4GB d'index MyISAM, allouez 512M en tant que key_buffer_size
.
Si vous disposez de 2 Go de RAM, de 4 Go d'index MyISAM et de 16 Go d'index InnoDB, allouez 512 Mo en tant que key_buffer_size
et 512M comme innodb_buffer_pool_size
.
Les scénarios possibles sont infinis ! !!
N'oubliez pas que, quelle que soit l'allocation, laissez suffisamment de RAM pour les connexions aux bases de données et le système d'exploitation.
Vous devriez modifier key_buffer_size
y innodb_buffer_pool_size
dans votre my.cnf
Ces deux paramètres sont les plus importants pour la mémoire. Pour obtenir vos valeurs actuelles, utilisez show variables like 'key_buffer_size';
y show variables like 'innodb_buffer_pool_size';
en mysql
client en ligne de commande.
Dans le cas du moteur Myisam
taille_buffer_clé + (taille_buffer_lecture + taille_buffer_tri) *max_connexions
cette valeur donne la mémoire totale possible que mysql peut consommer, ce qui devrait être inférieur à votre RAM ou près de 60 % de la RAM. dans le cas de innodb innodb_buffer_pool_size doit être inférieur à votre RAM ou à 60 % de votre RAM.
Réglez les valeurs ci-dessus, de sorte que l'utilisation de la RAM soit de 60% de votre RAM.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.