Ubuntu přešlo z Upstart na Systemd ve verzi 15.04 a již nerespektuje limity v /etc/security/limits.conf pro systémové služby. Tyto limity se nyní vztahují pouze na uživatelské relace.
Limity pro službu MySQL jsou definovány v konfiguračním souboru Systemd, který byste měli zkopírovat z jeho výchozího umístění do /etc/systemd a poté kopii upravit.
sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo vim /etc/systemd/system/mysql.service # or your editor of choice
Přidejte následující řádky na konec souboru:
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Můžete také nastavit číselný limit, např. LimitNOFILE=4510
.
Nyní znovu načtěte konfiguraci Systemd pomocí:
sudo systemctl daemon-reload
Restartujte MySQL a nyní by se mělo řídit direktivou max_connections.
Po upgradu na 15.04 jsem měl také problémy s čistým zastavením MySQL. Pokud se vás to týká (budete vědět, protože vypršení časového limitu po service mysql stop
bude trvat 300 sekund nebo service mysql restart
) a poté přidání následujícího řádku do stejného souboru /etc/systemd/system/mysql.service to za mě opravilo:
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
Zdá se, že tento druhý problém byl opraven do 16.04 a tento řádek již není vyžadován, takže než provedete upgrade distribuce, budete chtít zastavit MySQL a odstranit ExecStop
řádek z konfiguračního souboru.