Como você calcula o mysql max_connections?
O que você leva em consideração?
Como você calcula o mysql max_connections?
O que você leva em consideração?
Respostas:
Indo postar isso como resposta, com as informações relevantes. As fórmulas básicas são:
RAM disponível = buffers globais + (buffers de segmento x max_connections)
max_connections = (RAM disponível - buffers globais) / buffers de segmento
Para obter a lista de buffers e seus valores:
SHOW VARIABLES LIKE '%buffer%';
Aqui está uma lista dos buffers e se eles são Global ou Thread:
Buffers Globais : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size
Buffers de segmento : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack
ATENÇÃO! Isso é de 2011 usando o MySQL 5.1.x. Use por sua conta e risco
---- POST ORIGINAL ----
Aqui está outra fórmula alternativa no formulário de procedimento armazenado:
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;
Estou assumindo que você está usando um banco de dados MySQL> versão 5.1.xe você é um usuário privilegiado. Mas você brinca com as conexões máximas inserindo o número que deseja e vê os resultados.
Estou olhando para o número que estou obtendo da calibração simples: número_de_esperado_de_questão_por_segundo * número_de_esperança_de_ média_de_processos_de_tempo esperado * 2.
Para ajustes posteriores, estou sempre usando o sistema de monitoramento com dados históricos e tentando reservar 20% em caso de pico. É um pouco mais complexo quando você está usando o pool de algumas conexões (o que geralmente é uma boa ideia) - então você precisa monitorar o número de conexões usadas no pool.