it-swarm.com.de

Wie berechnet man die Variable mysql max_connections?

Wie berechnet man mysql max_connections?

Was berücksichtigen Sie?

39
Gabriel Solomon

Ich werde dies als Antwort mit den relevanten Informationen veröffentlichen. Die Grundformeln sind:

Verfügbar RAM = Globale Puffer + (Thread-Puffer x max_connections)

max_connections = (Verfügbar RAM - Globale Puffer)/Thread-Puffer

So erhalten Sie die Liste der Puffer und ihrer Werte:

SHOW VARIABLES LIKE '%buffer%';

Hier ist eine Liste der Puffer und ob sie global oder Thread sind:

Globale Puffer: key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size

Thread-Puffer: sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack

28
Derek Downey

WARNUNG! Dies ist ab 2011 mit MySQL 5.1.x. Verwendung auf eigenes Risiko

---- ORIGINAL POST ----

Hier ist eine weitere alternative Formel in Form einer gespeicherten Prozedur:

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;

Ich gehe davon aus, dass Sie eine MySQL-Datenbank> Version 5.1.x verwenden und ein privilegierter Benutzer sind. Sie spielen jedoch mit den maximalen Verbindungen, indem Sie eine beliebige Zahl eingeben und die Ergebnisse anzeigen.

11
randomx

Ich starre mit der Zahl, die ich durch einfache Berechnung erhalte: erwartete_Nummer_von_Anfragen_per_Sekunde * erwarteter_ Durchschnitt_Anforderungsverarbeitungszeit_ 2.

Für die spätere Abstimmung verwende ich immer ein Überwachungssystem mit historischen Daten und versuche, 20% für den Fall eines Spitzenwerts zu reservieren. Es ist etwas komplexer, wenn Sie einige Verbindungspools verwenden (was normalerweise eine gute Idee ist). Dann müssen Sie die Anzahl der verwendeten Verbindungen im Pool überwachen.

0
rvs