Что означает max_connections?
Я пытаюсь установить идеальную настройку производительности для MySQL и ресурсов, необходимых на общем хостинге.
Мой вопрос: что означает max_connections
?
Это число уникальных параллельных запросов, сделанных сервером?
Так что, если есть два пользователя, 1 с 1 вкладкой открыт, а другой с 4 вкладками открыт... и оба одновременно нажмите все свои вкладки для перезагрузки, будет ли 5 подключений к БД MySQL? Следовательно, если мы столкнемся с этим сценарием: 10 человек с 2 вкладками и 31 человек с одной вкладкой, все одновременно обновляющие обновления... с нашим max_connections
в 50, все будут заблокированы?
Я спрашиваю, потому что я хочу снимать с низким max_connections
, чтобы быть консервативным с ресурсами памяти, так как я постоянно вижу, что сайт переходит в режим дросселирования процессора.
Спасибо за помощь
Ответы
Ответ 1
Да, для каждой страницы открыто отдельное соединение. Однако, предполагая, что вы ничего не делаете с использованием базы данных, соединение будет недолговечным и закроется после того, как страница будет отправлена клиенту.
Если вы превысите максимальное количество подключений, любая последующая попытка подключения не будет выполнена.
Ответ 2
Количество разрешенных подключений контролируется системной переменной max_connections. Значение по умолчанию - 151 для повышения производительности, когда MySQL используется с веб-сервером Apache. (Раньше по умолчанию было 100.) Если вам нужно поддерживать больше соединений, вы должны установить большее значение для этой переменной.
mysqld фактически позволяет подключать max_connections + 1 клиентов. Дополнительное соединение зарезервировано для использования учетными записями, имеющими привилегию SUPER. Предоставляя привилегии SUPER администраторам, а не обычным пользователям (кому это не нужно), администратор может подключиться к серверу и использовать SHOW PROCESSLIST для диагностики проблем, даже если подключено максимальное количество непривилегированных клиентов. См. Раздел 12.7.5.30, "Синтаксис SHOW PROCESSLIST".
Максимальное количество подключений, поддерживаемых MySQL, зависит от качества библиотеки потоков на данной платформе, объема доступной ОЗУ, количества ОЗУ для каждого соединения, рабочей нагрузки от каждого соединения и требуемого времени отклика, Linux или Solaris должны поддерживать одновременно от 500 до 1000 одновременных подключений и до 10000 соединений, если у вас много доступных гигабайт оперативной памяти, а рабочая нагрузка у каждого из них низкая или время отклика отсутствует. Windows ограничена (открывать таблицы × 2 + открытые соединения) 2048 из-за уровня совместимости Posix, используемого на этой платформе.
Может потребоваться увеличение предела открытых файлов. Также см. Раздел 2.5 "Установка MySQL в Linux", как повысить лимит операционной системы на том, сколько дескрипторов может использоваться MySQL.
От: Справочное руководство MySQL 5.6:: C.5.2.7 Слишком много соединений
Ответ 3
max_connections
- это глобальная переменная, которая может иметь минимальное значение 1 и максимальное значение 100000. Тем не менее, всегда было общеизвестно, что установки max_connections на безумно высокое значение не слишком хороши для производительности. Поколения системных администраторов следовали этому правилу.
Когда речь идет о производительности, значение max_connections
всегда привязано к спецификации сервера, и если оно не используется, проблем с производительностью не возникнет.
Пожалуйста, используйте это для получения дополнительной информации.