Как вы рассчитываете mysql max_connections?
Что вы принимаете во внимание?
Как вы рассчитываете mysql max_connections?
Что вы принимаете во внимание?
Ответы:
Собираюсь опубликовать это как ответ, с соответствующей информацией. Основные формулы:
Доступная RAM = Глобальные буферы + (Thread Buffers 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
ПРЕДУПРЕЖДЕНИЕ! Это с 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, и вы являетесь привилегированным пользователем. Но вы играете с максимальным количеством соединений, вставляя любое число, которое хотите, и видите результаты.
Я смотрю с цифрой, которую получаю из простого вычисления: Ожидаемый_номер_ре_квестов_пер_секунд * Ожидаемый_авираж_резов_процесс_времени * 2.
Для дальнейшей настройки я всегда использую систему мониторинга с историческими данными и пытаюсь зарезервировать 20% в случае некоторого пика. Это немного сложнее, когда вы используете пул некоторых соединений (что обычно является хорошей идеей) - тогда вам нужно отслеживать количество используемых соединений в пуле.