it-swarm.asia

Bagaimana Anda menghitung variabel mysql max_connections?

Bagaimana Anda menghitung mysql max_connections?

Apa yang Anda pertimbangkan?

39
Gabriel Solomon

Akan memposting ini sebagai jawaban, dengan informasi yang relevan. Rumus dasarnya adalah:

Tersedia RAM = Global Buffer + (Thread Buffer x max_connections)

max_connections = (Tersedia RAM - Buffer Global)/Buffer Utas

Untuk mendapatkan daftar buffer dan nilainya:

SHOW VARIABLES LIKE '%buffer%';

Inilah daftar buffer dan apakah itu Global atau Thread:

Penyangga Global: key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size

Pembuat Utas: sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack

28
Derek Downey

PERINGATAN! Ini dari 2011 menggunakan MySQL 5.1.x. Gunakan dengan risiko Anda sendiri

---- ORIGINAL POST ----

Berikut formula alternatif lain dalam bentuk prosedur tersimpan:

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;

Saya berasumsi Anda menggunakan database MySQL> versi 5.1.x dan Anda adalah pengguna istimewa. Tetapi Anda bermain dengan koneksi maksimal dengan memasukkan nomor apa pun yang Anda inginkan dan melihat hasilnya.

11
randomx

Saya menatap dengan angka yang saya dapatkan dari perhitungan sederhana: expected_number_of_requests_per_second * expected_average_request_processing_time * 2.

Untuk penyetelan nanti, saya selalu menggunakan sistem pemantauan dengan data historis dan mencoba memiliki 20% cadangan jika terjadi beberapa puncak. Ini sedikit lebih kompleks ketika Anda menggunakan beberapa koneksi pooling (yang biasanya merupakan ide yang bagus) - maka Anda perlu memantau jumlah koneksi yang digunakan di pool.

0
rvs