Zmiana limitu otwartych plików w mysql 5.5

9

Mam problem z mysql 5.5 działającym na Ubuntu 12.04 z parametrem open-files-limit.

Niedawno zauważyłem pewne problemy z powodu limitu 1024, a tak naprawdę główny limit systemu został ustawiony na 1024, więc zmodyfikowałem /etc/security/limits.conf następująco:

* soft nofile 32000
* hard nofile 32000
root soft nofile 32000
root hard nofile 32000

Następnie sprawdzam wartość ulimit dla użytkownika root, a nawet dla użytkownika mysql, obie zwróciły nową wartość: 32000, więc zakładam, że zmiana została już wykonana.

Zmieniłem również wartość w pliku my.cnf, ustawiając limit otwartych plików na 24000, w następujący sposób:

open-files-limit    = 24000

Teraz pojawia się dziwna część, kiedy ponownie uruchamiam usługę mysql i sprawdzam zmienną open_files_limit, zwraca ona, że ​​wciąż jest ustawiona na 1024, więc mam te same problemy, które wcześniej (oczywiście) próbowałem użyć limitu otwartych plików zamiast tego open_files_limit w pliku konfiguracyjnym my.cnf, ten sam wynik, ALE jeśli zastąpię polecenie service, aby uruchomić usługę i uruchomić tylko przy użyciu mysqld (bez dodatkowych parametrów), usługa zostanie uruchomiona, a gdy sprawdzę parametr, zwróci 32000 ... Nie wiem, skąd bierze tę wartość, ponieważ nie jest ustawiona na my.cnf i nie jest podawana przez linię poleceń, przynajmniej nie dla siebie.

Wszelkie pomysły na to, dlaczego zmiana nie działa i jak ją rozwiązać w normalny sposób (uruchomienie za pośrednictwem usługi ...)?

davidv
źródło

Odpowiedzi:

9

W końcu znalazłem problem, wydaje się, że upstart nie używa parametrów zdefiniowanych w /etc/security/limits.conf, więc kiedy uruchamiam mysql za pomocą polecenia serwisowego (i tak, przy wstępnym uruchomieniu), zastępuje te zdefiniowane ograniczenia i używa domyślna 1024.

Rozwiązaniem jest zmodyfikowanie pliku mysql.conf, który definiuje usługę upstart, znajduje się on w /etc/init/mysql.conf i dodaje następujące wiersze przed blokiem przed uruchomieniem:

# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000

Pierwsza wartość określa miękki limit, druga twardy limit, po dodaniu tych wierszy usługa działa zgodnie z oczekiwaniami, stosując wartości zdefiniowane w pliku my.conf.

To ograniczenie powinno obowiązywać dla każdej usługi upstart zdefiniowanej w / etc / init, więc jeśli jakakolwiek usługa ma ten sam problem z limitem otwartych plików, to rozwiązanie powinno również działać.

davidv
źródło
1
Dobra robota!
pkhamre
To
załatwiło sprawę