Ubuntu è passato da Upstart a Systemd nella versione 15.04 e non rispetta più i limiti in /etc/security/limits.conf per i servizi di sistema. Questi limiti ora si applicano solo alle sessioni utente.
I limiti per il servizio MySQL sono definiti nel file di configurazione Systemd, che dovresti copiare dalla sua posizione predefinita in /etc/systemd e quindi modificare la copia.
sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo vim /etc/systemd/system/mysql.service # or your editor of choice
Aggiungi le seguenti righe in fondo al file:
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Puoi anche impostare un limite numerico, ad esempio LimitNOFILE=4510
.
Ora ricarica la configurazione di Systemd con:
sudo systemctl daemon-reload
Riavvia MySQL e ora dovrebbe obbedire alla direttiva max_connections.
Ho anche avuto problemi a fermare MySQL in modo pulito dopo l'aggiornamento a 15.04. Se questo ti riguarda (lo saprai perché ci vorranno 300 secondi prima che scada quando esegui il service mysql stop
o service mysql restart
) quindi l'aggiunta della seguente riga allo stesso file /etc/systemd/system/mysql.service l'ha risolto per me:
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
Quest'ultimo problema sembra essere stato risolto dalla 16.04 e questa riga non è più necessaria, quindi prima di eseguire un aggiornamento della distribuzione ti consigliamo di interrompere MySQL e rimuovere ExecStop
riga dal file di configurazione.