Jak obliczyć zmienną mysql max_connections?

Odpowiedzi:

27

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

Derek Downey
źródło
1
KCD podał ten link jako kalkulator maksymalnej pamięci: mysqlcalculator.com
Derek Downey
Derek, masz na myśli "Globalne bufory = SUMA wszystkich zmiennych globalnych buforów i Bufory wątków = suma wszystkich zmiennych buforów wątków"?
Mat
11

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.

randomx
źródło
1
Właśnie przeczytałem twoją formułę. Całkiem zręczny !!! BTW +1 !!!
RolandoMySQLDBA
2
Prawdopodobnie nadszedł czas, aby ponownie sprawdzić tę formułę, biorąc pod uwagę wszystkie zmiany w 5.5 i 5.6, ale nadal jest to przydatne.
randomx,
0

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.

RVS
źródło