Всем привет.
При экспериментах с буфером в Zabbix получил неожиданно ошибку "...too many connections". При этом фронтенд Zabbix-а был доступен, но сам сервис благополучно отдыхал от своей работы. Оказалось что текущие настройки pooler-a Zabbix требуют себе больше количество разрешенных коннектов при доступе к базе данных MySQL. Как известно, за это отвечает параметр MySQL max_connections, который по умолчанию равен 200.
Вроде все просто - идем в файл /etc/mysql.cnf и меняем лимит подключения:
[mysqld]
max_connections = 1000
Перезапускаем сервис MySQL
systemctl restart mysql
и проверяем SQL-запросом show variables like "max_connections"; текущее значение max_connections и... понимаем что ничего не изменилось.
А дело в том что в связи с переходом Ubuntu с Upstart на Systemd с версии 15.04 и выше, не соблюдаются ограничения выставленные в /etc/security/limits.conf для системных служб. Эти ограничения теперь применяются только к пользовательским сеансам. Пределы для службы MySQL определены в файле конфигурации Systemd, который мы должны скопировать из своего местоположения по умолчанию в /etc/systemd, а затем отредактировать копию:
sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo nano /etc/systemd/system/mysql.service
Добавляем следующие строки в конец файла:
LimitNOFILE=infinity
LimitMEMLOCK=infinity
И перегружаем конфигурацию Systemd с помощью:
sudo systemctl daemon-reload
Перезапускаем еще раз MySQL
systemctl restart mysql
и вот только теперь он будет подчиняться нашей директиве max_connections.
Также советуют указать большие значения параметров для max_user_connections и max_connect_error.
Успехов.
No comments:
Post a Comment
А что вы думаете по этому поводу?