Ubuntu przeszedł z Upstart do Systemd w wersji 15.04 i nie przestrzega już ograniczeń w /etc/security/limits.conf dla usług systemowych. Te limity dotyczą teraz tylko sesji użytkowników.
Limity usługi MySQL są zdefiniowane w pliku konfiguracyjnym Systemd, który należy skopiować z domyślnej lokalizacji do /etc/systemd, a następnie edytować kopię.
sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo vim /etc/systemd/system/mysql.service # or your editor of choice
Dodaj następujące wiersze na dole pliku:
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Możesz także ustawić limit liczbowy, np. LimitNOFILE=4510
.
Teraz ponownie załaduj konfigurację Systemd za pomocą:
sudo systemctl daemon-reload
Zrestartuj MySQL i powinien teraz przestrzegać dyrektywy max_connections.
Miałem również problemy z zatrzymaniem MySQL w sposób czysty po aktualizacji do wersji 15.04. Jeśli to dotyczy Ciebie (będziesz wiedział, ponieważ upłynie 300 sekund, zanim wykonasz service mysql stop
lub service mysql restart
), a następnie dodanie następującej linii do tego samego pliku /etc/systemd/system/mysql.service naprawiło to dla mnie:
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
Wydaje się, że ten ostatni problem został naprawiony do 16.04 i ta linia nie jest już wymagana, więc przed aktualizacją dystrybucji będziesz chciał zatrzymać MySQL i usunąć ExecStop
wiersz z pliku konfiguracyjnego.