Как вы вычисляете переменную mysql max_connections?

Как вы вычисляете mysql max_connections?

Что вы принимаете во внимание?

36 голосов | спросил Gabriel Solomon 15 FebruaryEurope/MoscowbTue, 15 Feb 2011 15:09:36 +0300000000pmTue, 15 Feb 2011 15:09:36 +030011 2011, 15:09:36

3 ответа


25

Собираемся опубликовать это как ответ с соответствующей информацией. Основные формулы:

  

Доступная оперативная память = глобальные буферы + (потоковые буферы x max_connections)

     

max_connections = (Доступная оперативная память - глобальные буферы) /Буферы потоков

Получить список буферов и их значений:

SHOW VARIABLES LIKE '%buffer%';

Вот список буферов и являются ли они глобальными или потоками:

Глобальные буферы : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size

Буферы потоков : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack

ответил Derek Downey 15 FebruaryEurope/MoscowbTue, 15 Feb 2011 20:42:06 +0300000000pmTue, 15 Feb 2011 20:42:06 +030011 2011, 20:42:06
11

Внимание! Это с 2011 года с использованием MySQL 5.1.x. Используйте на свой страх и риск

---- ОРИГИНАЛЬНАЯ ПОЧТА ----

Вот еще одна альтернативная формула в форме хранимой процедуры:

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;

Я предполагаю, что вы используете базу данных MySQL> версии 5.1.x, и вы являетесь привилегированным пользователем. Но вы играете с максимальными соединениями, вставляя нужное количество и видите результаты.

ответил randy melder 16 FebruaryEurope/MoscowbWed, 16 Feb 2011 02:43:52 +0300000000amWed, 16 Feb 2011 02:43:52 +030011 2011, 02:43:52
0

Я смотрю с номером, который я получаю от простого вычисления: expected_number_of_requests_per_second * expected_average_request_processing_time * 2.

Для последующей настройки я всегда использую систему мониторинга с историческими данными и стараюсь иметь 20% зарезервированных в случае некоторого пика. Это немного сложнее, когда вы используете некоторый пул соединений (что обычно является хорошей идеей) - тогда вам нужно отслеживать количество используемых подключений в пуле.

ответил rvs 15 FebruaryEurope/MoscowbTue, 15 Feb 2011 22:11:52 +0300000000pmTue, 15 Feb 2011 22:11:52 +030011 2011, 22:11:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132