Przed Mavericks mogłem użyć /etc/launchd.conf
pliku do zmiany maksymalnego zużycia zasobów systemowych, na przykład:
limit maxfiles 16384 unlimited
limit maxproc 16384 unlimited
To już nie działa w Mavericks.
Jak to zrobić w najnowszej wersji OS X?
/etc/sysctl.conf
, nie/etc/sysctrl.conf
.sudo serverinfo --setperfmode true
raz, aby ustawić urządzenie w „trybie wydajności serwera”. Następnie masz „wyższe maksimum”, w zależności od konfiguracji maszyny. Proszę zobaczyć mój post na discussions.apple.com/thread/5166397 o szczegóły. W wersji 10.10 (Yosemite) tryb jest domyślnie włączony (przynajmniej na moim komputerze!). Zobacz moją odpowiedź poniżej.Odpowiedzi:
Limit sesji Shell
Ustawione limity
ulimit
wpływają tylko na procesy utworzone przez bieżącą sesję powłoki.root
(administratora) poprzez wykonanie poleceń konfiguracji systemu lub zmodyfikowanie plików konfiguracji systemu.Po zakończeniu sesji powłoki (przez Ctrl+ D,
exit
lub zamknięcieTerminal.app
okna itp.) Ustawienia znikają. Jeśli chcesz mieć to samo ustawienie w następnej sesji powłoki, dodaj to ustawienie do skryptu uruchamiania powłoki.UWAGA: Jeśli używasz
bash
, powinien to być~/.bash_proile
lub~/.bash_login
. Jeśli używasz innych powłok, prawdopodobnie tak powinno być~/.profile
.Limit systemu (wymaga ponownego uruchomienia)
Dla 10.9 (Mavericks), 10.10 (Yosemite), 10.11 (El Capitan) i 10.12 (Sierra):Musisz utworzyć plik w
/Library/LaunchDaemons/limit.maxfiles.plist
(właściciel:,root:wheel
tryb:)0644
:Powinieneś zmienić liczby zgodnie ze swoimi potrzebami. Są to odpowiednio „miękkie ograniczenie” (
Dla 10,8 (Mountain Lion):262144
) i „twarde ograniczenie” (524288
). Aby uzyskać więcej informacji, zapoznaj się ze stroną podręcznika, uruchamiającman launchd.plist
.Możesz dodać następujące wiersze do
/etc/sysctl.conf
(owner:,root:wheel
mode:)0644
:Powinieneś zmienić liczby zgodnie ze swoimi potrzebami. Są to odpowiednio „limit ogólnosystemowy” (
W przypadku starszego systemu Mac OS X (chyba działa na wersji 10.7 (Lion) lub wcześniejszej):kern.maxfiles
) i „limit na proces” (kern.maxfilesperproc
). Aby uzyskać więcej ustawień, sprawdź stronę podręcznika, uruchamiającman sysctl
lub przeczytaj kod źródłowy na/usr/include/sys/sysctl.h
.Możesz dodać następujący wiersz do
/etc/launchd.conf
(owner:,root:wheel
mode:)0644
:Powinieneś zmienić liczby zgodnie ze swoimi potrzebami. Są to odpowiednio „miękkie ograniczenie” (
Jeśli system nie pozwala ustawić limitów powyżej określonej wartości ...262144
) i „twarde ograniczenie” (524288
).System nie pozwala ustawić wartości wyższej niż „twarde maksimum” (zaproponowane przez Apple). Aby zwiększyć to „twarde maksimum”, musisz kupić „OS X Server” w „App Store”, a następnie raz wykonać następujące polecenie:
Aktywuje to „tryb wydajności serwera” na twoim komputerze. Następnie możesz ustawić maksimum zgodnie z konfiguracją urządzenia (patrz to) . Próbowałem już wcześniej (w Mountain i Mavericks) i działa! Proszę zobaczyć mój post ( tutaj ), aby uzyskać więcej informacji.
Bibliografia
źródło
/etc/launchd.conf
podejście pokazuje jakikolwiek efekt podczas uruchamianiaulimit -n
. Czy ktoś może zaktualizować instrukcje, jeśli jest to istotne?/etc/sysctl.conf
: superuser.com/questions/827984/...Wygląda na to, że utworzenie pliku
/etc/launchd.conf
i umieszczenie w nim polecenia powinno załatwić sprawę.Jeśli to nie zadziała, prawdopodobnie możesz edytować lub utworzyć
/etc/rc.local
plik i dodać do niego swoje polecenie, ponieważ istnieje niewielkie prawdopodobieństwo, że Apple kiedykolwiek usunie obsługę ograniczenia w wierszu poleceń.Edycja 1 :
Powinienem zacząć,
launchd
strona man odwołuje się do następujących plików:Założę się, że teraz musisz wprowadzić swoje polecenie w
~/Library/LaunchAgents
lub w/Library/LaunchDaemons
.Powinieneś spróbować obu.
Edycja 2 :
Należy również pamiętać, że uruchomiony plik xml wymaga nie tylko skryptów. GUI zostało zaprojektowane, aby pomóc w takim zadaniu, a nie wolnym jest Lingon . Może istnieją inne darmowe produkty.
źródło
/etc/launchd.conf
i/etc/rc.local
są ignorowane w 10.10 i później, bo w 10,10 launchd został przebudowany i SystemStarter został usunięty.Właśnie dodałem te dwie linie do moich
.bash_profile
prac jak urok
źródło
ulimit -n -H
. W systemie macOS High Sierraunlimited
zmieniło się „miękkie” ograniczenie użytkownika.bash_profile
.Limity systemowe
Zmiana limitów w
/etc/launchd.conf
lub/etc/rc.local
nie jest już obsługiwana w najnowszym systemie macOS. Zobacz: Stare systemy i technologia .Zamiast tego należy utworzyć nowego agenta uruchamiania .
Oto przykład
PlistBuddy
polecenia przy użyciu polecenia (patrzman PlistBuddy
:):I podobnie dla
maxproc
limitu:Aby załadować powyższe pliki, uruchom:
sudo launchctl load /Library/LaunchAgents/com.launchd.*.plist
.Uwagi:
cat
lubPlistBuddy -x -c Print /Library/LaunchAgents/com.launchd.maxfiles.plist
.tail -f /var/log/system.log
.launchd
limity, uruchom:launchctl limit
..plist
Plik może być umieszczony w lub na użytkownika katalogu czynnik całego systemu (LaunchAgents
). Zobacz:man launchd
aman launchd.plist
czy ten lub , że odpowiedź na więcej szczegółów.Limity jądra
Należy pamiętać, że powyżej limitów systemu uruchomionych jest nadal ograniczony przez jądro, więc nie można ustawić ich powyżej rzeczywistych limitów ustawionych w zmiennych stanu jądra (patrz:
man sysctl
pomoc).Aby zobaczyć aktualne limity jądra, uruchom:
sysctl -a | grep ^kern.max
.W celu zwiększenia
maxfiles
limitu, uruchom:sudo sysctl -w kern.maxfiles=20480
.Aby je utrzymać, użyj podobnej metody, aby utworzyć
.plist
pliki startowe , npOgraniczenia powłoki
W celu uzyskania limitów powłoki dodaj odpowiednie
ulimit
polecenie~/.bashrc
lub~/.bash_profile
plik startowy dla pojedynczego użytkownika lub/etc/bashrc
wszystkich użytkowników. Zobacz: Jak dodać trwałe ustawienia ulimit powłoki na Macu?Sugerowane linie do dodania:
źródło
maxproc
ponieważ domyślnie limit twardego jądra dla tego parametru wynosi 1064, co oznacza, że ustawienie go na 2000 lub „nieograniczony” w rzeczywistości ustawia go tylko na 1064. Niestety jądro tego nie wymuszamaxprocperuid < maxproc
, a sugerowane ustawienia pozostawią System zmaxprocperuid=2000
, amaxproc=1064
co jest niebezpieczne. Przeczytaj więcej na ten temat tutaj .