Comment calculez-vous mysql max_connections?
Que prenez-vous en considération?
Comment calculez-vous mysql max_connections?
Que prenez-vous en considération?
Réponses:
Va poster cela comme une réponse, avec les informations pertinentes. Les formules de base sont:
RAM disponible = tampons globaux + (tampons de threads x max_connections)
max_connections = (RAM disponible - Tampons globaux) / Tampons de threads
Pour obtenir la liste des tampons et leurs valeurs:
SHOW VARIABLES LIKE '%buffer%';
Voici une liste des tampons et s'ils sont globaux ou threadés:
Tampons globaux : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size
Tampons de threads : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack
ATTENTION! C'est à partir de 2011 en utilisant MySQL 5.1.x. À utiliser à vos risques et périls
---- POSTE ORIGINAL ----
Voici une autre formule alternative sous forme de procédure stockée:
DELIMITER //
CREATE PROCEDURE sproc_show_max_memory ( OUT max_memory DECIMAL(7,4))
BEGIN
SELECT ( @@key_buffer_size + @@query_cache_size + @@tmp_table_size + @@innodb_buffer_pool_size + @@innodb_additional_mem_pool_size + @@innodb_log_buffer_size + @@max_connections * ( @@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size + @@join_buffer_size + @@binlog_cache_size + @@thread_stack ) ) / 1073741824 AS MAX_MEMORY_GB INTO max_memory;
END//
DELIMITER ;
CALL sproc_show_max_memory(@show_max_memory);
SELECT @show_max_memory;
Je suppose que vous utilisez une base de données MySQL> version 5.1.x et que vous êtes un utilisateur privilégié. Mais vous jouez avec le nombre maximal de connexions en insérant le nombre souhaité et en visualisant les résultats.
Je regarde avec un chiffre que je tire d'un simple calcul: nombre_attendu_attendu_secondaire * nombre_attendu_attendu_attente_processing_temps * 2.
Pour un réglage ultérieur, j'utilise toujours le système de surveillance avec des données historiques et j'essaie d'avoir 20% de réserve en cas de pic. C'est un peu plus complexe lorsque vous utilisez le regroupement de connexions (ce qui est généralement une bonne idée) - vous devez ensuite surveiller le nombre de connexions utilisées dans le pool.