Come si calcola mysql max_connections?
Cosa prendi in considerazione?
Come si calcola mysql max_connections?
Cosa prendi in considerazione?
Risposte:
Pubblicheremo questo come una risposta, con le informazioni pertinenti. Le formule di base sono:
RAM disponibile = Global Buffers + (Thread Buffers x max_connections)
max_connections = (RAM disponibile - Buffer globali) / Buffer thread
Per ottenere l'elenco dei buffer e i loro valori:
SHOW VARIABLES LIKE '%buffer%';
Ecco un elenco dei buffer e se sono globali o thread:
Buffer globali : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size
Thread Buffer : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack
AVVERTIMENTO! Questo è del 2011 usando MySQL 5.1.x. Utilizzare a proprio rischio
---- POSTO ORIGINALE ----
Ecco un'altra formula alternativa nel modulo di stored procedure:
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;
Suppongo che tu stia utilizzando un database MySQL> versione 5.1.xe tu sia un utente privilegiato. Ma giochi con le connessioni massime inserendo il numero che desideri e vedi i risultati.
Sto fissando il numero che sto ottenendo dalla semplice calulazione: expected_number_of_requests_per_second * expected_average_request_processing_time * 2.
Per una successiva messa a punto, utilizzo sempre il sistema di monitoraggio con dati storici e cerco di riservare il 20% in caso di picco. È un po 'più complesso quando si utilizzano alcuni pool di connessioni (che di solito è una buona idea) - quindi è necessario monitorare il numero di connessioni utilizzate nel pool.