Niedawno przeszedłem z Mavericks do Yosemite ... wystąpiły bóle głowy
Jestem prawie pewien, że mój problem dotyczy liczby plików, które mogę otworzyć - ale nie jestem pewien, jak go rozwiązać . Jestem też całkiem pewien, że przeczytałem każdy artykuł / wskazówkę dotyczącą tworzenia /etc/sysctl.conf
pliku i /etc/launchd.conf
pliku
Dla jasności oba wyglądają obecnie jak nb (nie jestem nawet pewien, czy są to właściwe polecenia, aby je w nich umieścić - próbowałem prawie wszystkiego i każdej kombinacji, tj .: wyższe wartości, niższe wartości , usuwanie poleceń, dodawanie poleceń)
/etc/launchd.conf
limit maxfiles 16384 32768
limit maxproc 1000 2000
/etc/sysctl.conf
# Turn up maxproc
kern.maxproc=2048
# Turn up the maxproc per user
kern.maxprocperuid=512
Próbowałem również zwiększyć moje wartości ulimit - zarówno globalnie, jak i lokalnie dla mojej bieżącej sesji ... no bueno
ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-v: address space (kbytes) unlimited
-l: locked-in-memory size (kbytes) unlimited
-u: processes 709
-n: file descriptors 4096
Ok - tu zaczyna się mój ból głowy ... Moja baza danych (serwer Percona 5.6.21-69.0 instalowany przez homebrew) zaczęła się dusić i umierać, aw mysql-error.log została wypełniona z błędem too many files open
.
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorder_products.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorders.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsdevices.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsracks.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/v_classunity_classlist.frm' (errno: 24 - Too many open files)
2014-10-21 15:20:48 5190 [ERROR] Error in accept: Too many open files
To tutaj początkowo zacząłem próbować rozwiązać ten problem poprzez „podniesienie” moich ulimit, maxfiles, maxproc itp.
W końcu - sfrustrowany, przeszedłem i wrócę do tego problemu później. Więc wtedy próbowałem sudo gem install nokogiri
w kółko, to się nie udało i wyplułem ten sam błąd (wiele powtórzeń o builder.rb nie udało się zbudować natywnego rozszerzenia gem - a następnie kilka powtarzających się stosów śledzenia Logs Gist
Błędy instalacji nokogiri
Próbowałem / przeszukałem kilka różnych podejść do rozwiązania tego problemu (tj .: dodatkowe flagi itp.). To niesamowite - i kiedy zacząłem myśleć, że ten problem jest związany z liczbą otwartych plików / procesów, sprawdziłem, top
kiedy klejnot się instalował .... Byłem bardzo zaskoczony, gdy zobaczyłem, co znalazłem
top podczas gem install nokogiri
Wygląda na to, że mój proces wciąż się rozwidla, co miało sens dla JEDNEJ linii na moim poprzednim obrazie (patrz „obraz błędów instalacji nokogiri”)
sh: fork: Resource temporarily unavailable
Więc mam trochę pomysłów, ale nie jestem pewien, jak debugować # plików?
AKTUALIZACJA
Udało mi się zainstalować nokogiri. Niestety, nie jestem do końca pewien, co to naprawiło b / c Próbowałem tak wielu rzeczy. Ale myślę, że to musiało poradzić sobie z ponownym instalowaniem ruby. Nadal jednak pojawia się ten sam problem, gdy moja baza danych narzeka na zbyt wiele otwartych plików, gdy korzystam z bazy danych, która nie jest trywialnie mała.
źródło
Odpowiedzi:
/etc/launchd.conf
Wydaje mi się, że modyfikowanie liczby zapytań Google i sugestii SO nie działa w Yosemite (10.10). Po wielu kombinacjach zmiany / restartu / testu skończyło się to modyfikowaniem (lub tworzeniem, jeśli nie istnieje)/etc/sysctl.conf
pliku.Właśnie to musiałem wprowadzić, aby działało
Nie jestem pewien, czy
kern.maxfiles
trzeba tam być, ale kiedy sam to miałem, nadal miałem ten sam problem, kiedy dodałem, żekern.maxfilesperproc
wszystko zaczęło działać.źródło
sysctl -a | grep kern.maxfiles
.Aby dostosować limity otwartych plików w całym systemie w systemie Mac OS X Yosemite, musisz utworzyć dwa pliki konfiguracyjne. Pierwszy to plik listy właściwości (aka plist),
/Library/LaunchDaemons/limit.maxfiles.plist
który zawiera następującą konfigurację XML:Spowoduje to ustawienie limitu otwartych plików na 65536. Drugi plik konfiguracyjny plist powinien być przechowywany w
/Library/LaunchDaemons/limit.maxproc.plist
następującej treści:Oba pliki plist muszą być własnością
root:wheel
i mieć uprawnienia-rw-r--r--
. Uprawnienia te powinny być domyślnie na miejscu, ale można je zapewnić, uruchamiając jesudo chmod 644 <filename>
. Chociaż powyższe kroki spowodują prawidłowe ustawienie ogólnosystemowych limitów otwartych plików po ponownym uruchomieniu, możesz je zastosować ręcznie, uruchamiająclaunchctl limit
.Oprócz ustawienia te limity na poziomie systemu, zalecamy ustawienie na poziomie sesji, jak również poprzez dołączenie następujące linie do swojego
bashrc
,bashprofile
lub analogicznego pliku:Podobnie jak pliki plist, twój bashrc lub podobny plik powinien mieć
-rw-r--r--
uprawnienia. W tym momencie możesz ponownie uruchomić komputer i wpisać ulimit -n w swoim terminalu. Jeśli twój system jest poprawnie skonfigurowany, powinieneś zobaczyć, że maxfiles został ustawiony na 65536.Źródło: http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/
źródło
Domyślne wartości Yosemite to 12 KB i 10 KB:
Tylko ustawienie
kern.maxfiles
w/etc/sysctl.conf
wydaje się rozwiązać moje problemy./etc/sysctl.conf
plik:źródło
launchctl limit maxfiles
dał mi to:maxfiles 256 unlimited