Ubuntu премина от Upstart към Systemd във версия 15.04 и вече не спазва ограниченията в /etc/security/limits.conf за системни услуги. Тези ограничения вече важат само за потребителски сесии.
Ограниченията за услугата MySQL са дефинирани в конфигурационния файл на Systemd, който трябва да копирате от местоположението му по подразбиране в /etc/systemd и след това да редактирате копието.
sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo vim /etc/systemd/system/mysql.service # or your editor of choice
Добавете следните редове в долната част на файла:
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Можете също да зададете числово ограничение, например LimitNOFILE=4510
.
Сега презаредете конфигурацията на Systemd с:
sudo systemctl daemon-reload
Рестартирайте MySQL и вече трябва да се подчинява на директивата max_connections.
Също така имах проблеми със спирането на MySQL чисто след надграждане до 15.04. Ако това ви засяга (ще знаете, защото времето за изчакване ще отнеме 300 секунди, когато направите service mysql stop
или service mysql restart
) след това добавянето на следния ред към същия файл /etc/systemd/system/mysql.service го поправи за мен:
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
Последният проблем изглежда е отстранен от 16.04 и този ред вече не е необходим, така че преди да направите надстройка на дистрибуцията, ще искате да спрете MySQL и да премахнете ExecStop
ред от конфигурационния файл.