Zrozumiałem to dzięki zabawie z Riakiem z Basho . Kierunki dla Yosemite to:
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:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>65536</string>
<string>65536</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
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:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>2048</string>
<string>2048</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>
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 je sudo 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ąc launchctl 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:
ulimit -n 65536
ulimit -u 2048
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 wejść ulimit -n
do terminala. Jeśli twój system jest poprawnie skonfigurowany, powinieneś zobaczyć, że maxfiles został ustawiony na 65536.
Proces ten jest nieco inny w przypadku innej wersji OS X, ale również dobrze udokumentowany przez ten zespół. Jeszcze raz dziękuję zespołowi z Basho za udokumentowanie tego procesu.
launchctl limit
nie działało dla mnie 2) Te dwa polecenia ulimit zawiodły przed ponownym uruchomieniem (i myślę, że są niepotrzebne?), po prostu zignorowałem tę część.