Jak obliczyć mysql max_connections?
Co bierzesz pod uwagę?
Jak obliczyć mysql max_connections?
Co bierzesz pod uwagę?
Odpowiedzi:
Zamierzam opublikować to jako odpowiedź, wraz z odpowiednimi informacjami. Podstawowe formuły to:
Dostępna pamięć RAM = bufory globalne + (bufory wątków x maks. Połączenia)
max_connections = (dostępna pamięć RAM - bufory globalne) / bufory wątków
Aby uzyskać listę buforów i ich wartości:
SHOW VARIABLES LIKE '%buffer%';
Oto lista buforów i czy są one globalne czy wątkowe:
Global Buffers : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_Size,
Bufory wątków : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack
OSTRZEŻENIE! Pochodzi z 2011 roku przy użyciu MySQL 5.1.x. Używaj na własne ryzyko
---- ORYGINALNY POCZTA ----
Oto kolejna alternatywna formuła w postaci procedury składowanej:
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;
Zakładam, że używasz bazy danych MySQL> wersja 5.1.x i jesteś uprzywilejowanym użytkownikiem. Ale grasz z maksymalną liczbą połączeń, wstawiając dowolną liczbę i widząc wyniki.
Wpatruję się w liczbę, którą otrzymuję z prostej kalkulacji: oczekiwany_numer_w_wymagań_w_początku * oczekiwany_średnia_wymagana_procesa_czasu przetwarzania * 2.
Do późniejszego strojenia zawsze używam systemu monitorowania z danymi historycznymi i staram się mieć 20% zarezerwowane na wypadek pewnego szczytu. Jest to nieco bardziej skomplikowane, gdy używasz puli połączeń (co zwykle jest dobrym pomysłem) - wtedy musisz monitorować liczbę używanych połączeń w puli.