Come si calcola la variabile mysql max_connections?


Risposte:


27

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


1
KCD ha fornito questo link come un calcolatore di memoria massima: mysqlcalculator.com
Derek Downey,

Derek, intendi "Buffer globali = SOMMA di tutte le variabili buffer globali e Buffer thread = somma di tutte le variabili buffer thread"?
Mat

11

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.


1
Ho appena letto la tua formula. Abbastanza lucido !!! A proposito +1 !!!
RolandoMySQLDBA

2
Probabilmente è il momento di rivisitare questa formula date tutte le modifiche in 5.5 e 5.6, ma è comunque abbastanza utile.
randomx,


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.