¿Cómo se calcula mysql max_ connections?
¿Qué tomas en consideración?
¿Cómo se calcula mysql max_ connections?
¿Qué tomas en consideración?
Respuestas:
Voy a publicar esto como una respuesta, con la información relevante. Las fórmulas básicas son:
RAM disponible = Buffers globales + (Thread Buffers x max_ connections)
max_ connections = (RAM disponible - Buffers globales) / Buffers de subprocesos
Para obtener la lista de buffers y sus valores:
SHOW VARIABLES LIKE '%buffer%';
Aquí hay una lista de los buffers y si son Global o Thread:
Buffers globales : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size
Buffers de subprocesos : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack
¡ADVERTENCIA! Esto es de 2011 usando MySQL 5.1.x. Úselo bajo su propio riesgo
---- POSTE ORIGINAL ----
Aquí hay otra fórmula alternativa en forma de procedimiento almacenado:
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;
Supongo que estás usando una base de datos MySQL> versión 5.1.xy eres un usuario privilegiado. Pero juegas con las conexiones máximas insertando el número que quieras y ves los resultados.
Estoy mirando con el número que obtengo de la simple calulación: número_de_especificado_de_pesadas_por_segundo * esperado_proceso_de_procesamiento_hora * 2.
Para ajustes posteriores, siempre uso un sistema de monitoreo con datos históricos y trato de tener un 20% reservado en caso de algún pico. Es un poco más complejo cuando usa algunas agrupaciones de conexiones (que generalmente es una buena idea), entonces necesita monitorear la cantidad de conexiones usadas en la agrupación.