Как изменить лимит соединений с MySQL/MariaDB (max_connections)

Обновлено Обновлено: Опубликовано Опубликовано:

Тематические термины: MySQL, MariaDB.

По умолчанию, после установки СУБД максимально разрешенное количество одновременных подключений равно 151. В некоторых случаях, этого будет недостаточно, что приведет к накапливанию очередей и низкой производительности приложений — необходимо увеличить стандартные значения.

Просмотр значений

Посмотреть максимально разрешенное количество подключений:

> SHOW VARIABLES WHERE `variable_name`='max_connections';

Посмотреть текущее количество подключений:

> SHOW status WHERE `variable_name` = 'threads_connected';

Настройка max_connections

Открываем конфигурационный файл mysql:

# vi /etc/my.cnf.d/server.cnf

* в более ранних версиях данный файл находится по пути /etc/my.cnf

В директиве [mysqld] добавляем или изменяем следующую строку:

[mysqld]
...
max_connections = 500

* в данном примере мы разрешим 500 одновременных подключений к MySQL. При превышении данного значения будет отображаться ошибка too many connections.

Перезагружаем mysql:

# systemctl restart mysql

* в некоторых системах перезагрузка сервера баз данных выполняется командой service mysql restart или service mysqld restart или service mysql-server restart

Оптимальное значение

Для данного лимита нет золотого стандарта — маленькое значение может привести к выстраиванию очередей запросов, большое — к перегрузке серверного оборудования. Правильнее всего постоянно наблюдать за значениями max_connections и threads_connected и определить для себя свой, так называемый, Best Practices.

На первое время, для сервера можно поставить лимит в 200-300 подключений.

Опция max_user_connections

В отличие от max_connections, данная опция задает лимит для подключений конкретному клиенту. Настройка также выполняется в конфигурационном файле СУБД:

[mysqld]
...
max_connections = 500
max_user_connections = 50

* в данном примере сервер будет принимать 500 одновременных подключений, но от каждого клиента, максимум — 50.

По умолчанию, лимит не задан и равен 0. Посмотреть текущее значение можно командой:

> SHOW VARIABLES WHERE variable_name = 'max_user_connections';

# Серверы # Базы данных # MySQL
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет