Решение проблемы ошибки MySQL/MariaDB «Слишком много соединений»

Ошибка MySQL «Слишком много соединений» возникает, когда к базе данных MySQL отправляется больше запросов, чем может быть обработано. Ошибку можно устранить, установив новое число максимальных соединений в конфигурационном файле или глобально.

Как возникает ошибка MySQL «Слишком много соединений»?

База данных может обрабатывать только ограниченное количество запросов одновременно. Если максимум превышен, MySQL выводит сообщение об ошибке, приведенное выше. Это происходит, например, когда PHP-скрипт пытается установить слишком много одновременных соединений с реляционной базой данных. Если вы используете веб-приложение, которое использует базу данных MySQL, возможно, что ошибка MySQL «Too many connections» возникает, когда спрос очень высок.

Выберите новое максимальное количество соединений

Системная переменная max_connections определяет количество соединений, которые будет принимать MySQL/MariaDB. Значение по умолчанию — 151 соединение, что позволяет принимать 150 обычных соединений плюс одно соединение от учетной записи SUPER. SUPER — это привилегия MySQL, которая предоставляет пользователю права администратора.

Прежде всего, необходимо решить, какое новое максимальное значение max_connections вы хотите установить. Есть несколько соображений, которые необходимо учитывать при увеличении количества соединений MySQL/MariaDB. Максимальное число, которое может поддерживать система, будет зависеть от:

  • Количество доступной оперативной памяти
  • Сколько оперативной памяти занимает каждое соединение (простые запросы потребуют меньше оперативной памяти, чем более трудоемкие соединения).
  • Приемлемого времени отклика.

Согласно документации MySQL, большинство систем Linux должны без проблем поддерживать от 500 до 1 000 соединений.

Изменение max_connections

Переменная max_connections может быть изменена в двух местах:

Обновите файл my.cnf, чтобы новое значение использовалось при перезапуске сервера MySQL/MariaDB.

Используйте команду SET GLOBAL для обновления значения на работающем сервере MySQL/MariaDB. В этом случае нет необходимости перезапускать MySQL/MariaDB, поэтому вам не придется предусматривать время простоя вашей базы данных.

Отображение количества соединений в MySQL

Чтобы проверить текущее число max_connections, войдите в клиент командной строки MySQL/MariaDB с помощью следующей команды:

mysql -u root -p

Теперь используйте команду:

SHOW variables;

Это выведет список всех переменных, которые установлены для MySQL/MariaDB. Прокрутите список вверх, чтобы найти значение для max_connections.

Обновление файла my.cnf

Откройте файл /etc/my.cnf для редактирования с помощью команды :

sudo nano /etc/my.cnf

Сразу под первой строкой вы увидите следующую запись:

[mysqld]

Добавьте строку к этой записи:

max_connections=[desired new maximum number]

Например, чтобы установить значение max_connections равным 200, первые две строки вашего конфигурационного файла должны выглядеть следующим образом:

[mysqld]
max_connections=200

Сохраните и выйдите из файла.

Установка количества соединений глобально

Вы также можете установить максимальное количество соединений для вашей базы данных глобально. Сначала войдите в клиент командной строки MySQL/MariaDB, используя команду:

mysql -u root -p

Установите новое максимальное число по вашему выбору с помощью команды max_connections:

SET GLOBAL max_connections=[desired new maximum number];

Например, чтобы установить max_connections равным 200, команда:

SET GLOBAL max_connections=200;

Наконец, выйдите из MySQL/MariaDB с помощью команды:

quit;
  • Веб-разработка

    Оцените статью
    cdelat.ru
    Добавить комментарий