Gibt es eine Korrektur für den Fehler "Zu viele offene Dateien im System" unter OS X 10.7.1?
Ich muss die lästige Begrenzung für “Zu viele offene Dateien im System” unter OS X 10.7.1.  loswerden;
Gibt es eine Möglichkeit?
Ich muss die lästige Begrenzung für “Zu viele offene Dateien im System” unter OS X 10.7.1.  loswerden;
Gibt es eine Möglichkeit?
Laut diesem hilfreichen Artikel (dessen Lektüre ich empfehle):
Standardmäßig ist die maximale Anzahl von Dateien, die Mac OS X öffnen kann, auf 12.288 festgelegt, und die maximale Anzahl von Dateien, die ein bestimmter Prozess öffnen kann, beträgt 10.240.
Sie können diese mit:
sysctl kern.maxfiles
sysctl kern.maxfilesperproc
Sie können die Grenzen (auf eigenes Risiko) mit erhöhen:
sysctl -w kern.maxfiles=20480
(oder wie auch immer Sie sich entscheiden) sysctl -w kern.maxfilesperproc=18000
(oder wie auch immer Sie sich entscheiden) Um die Änderung dauerhaft zu machen, verwenden Sie sudo
, um Ihre Einstellungen in /etc/sysctl.conf
(die Sie eventuell anlegen müssen) zu setzen, etwa so:
kern.maxfiles=20480
kern.maxfilesperproc=18000
Hinweis: In OS X 10. 10 oder niedriger können Sie eine Einstellung in /etc/launchd.conf
wie limit maxfiles
hinzufügen, und es wird alles überschreiben, was Sie hier eingeben.
Nochmals, aus dem Artikel:
Wenn Sie dies getan haben, wird der Kernel selbst eine maximale Anzahl von Dateien haben, aber die Shell möglicherweise nicht. Und da die meisten Prozesse, die so viele Dateien in Anspruch nehmen werden, von der Shell initiiert werden, werden Sie diese Zahl erhöhen wollen.
Der Befehl dafür lautet:
ulimit -S -n 2048 # or whatever number you choose
Diese Änderung ist ebenfalls temporär; sie gilt nur für die aktuelle Shell-Sitzung. Sie können ihn zu Ihrer Shell-Konfigurationsdatei (.bashrc
, .zshrc
oder was auch immer) hinzufügen, wenn Sie wollen, dass er jedes Mal ausgeführt wird, wenn Sie eine Shell öffnen.
Es scheint, als gäbe es für jede Version von OS X eine völlig andere Methode, um das Limit für offene Dateien zu ändern!
Für OS X Sierra (10.12.X) müssen Sie:
1. Bei /Library/LaunchDaemons/limit.maxfiles.plist
eine Datei erstellen und Folgendes einfügen (Sie können die beiden Zahlen (die das weiche bzw. harte Limit darstellen) ändern:
<?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>64000</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
*2. * Ändern Sie den Eigentümer Ihrer neuen Datei:
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
3. Laden Sie diese neuen Einstellungen:
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
4. Prüfen Sie schließlich, ob die Grenzen korrekt sind:
launchctl limit maxfiles
Sie werden Ihre Ulimit-Einstellungen erhöhen müssen - unter OS X ist es heutzutage ziemlich niedrig - standardmäßig 256. Fügen Sie ulimit -n 4096
oder ähnliches zu Ihrem ~/.profile oder einem gleichwertigen Profil hinzu und das wird es in Ihrer lokalen Umgebung lösen. Führen Sie ulimit -a
aus, um Ihre aktuellen Werte zu überprüfen
Um die Systemeinstellungen zu sehen, führen Sie Folgendes aus:
launchctl limit maxfiles
In Lion (10240) ist es pro Prozess etwas höher eingestellt als früher. Wenn Sie dort aber immer noch auf sie treffen, können Sie sie mit dem gleichen Befehl mit den gewünschten Stufen höher einstellen. Um die Änderungen dauerhaft zu machen, müssen Sie in /etc/launchd.conf die entsprechenden Zeilen hinzufügen.
Eine andere Möglichkeit könnte darin bestehen, den Schuldigen zu finden:
sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail
Für die letzte könnten Sie sehen, welche Dateien offen sind:
sudo lsof -n | grep socketfil
Und den Prozess auf Wunsch beenden
kill $pid
Aus den Kommentaren:
Sie können auch eine Liste der Prozess-IDs mit den meisten offenen Dateien erhalten, indem Sie
lsof -n | sed -E 's/^[^]+[]+([^]+).*$//' | uniq -c | sort | tail
Leute, auf Mavericks 10.9.4
ulimit -n 2048
funktioniert gut. Möglicherweise müssen Sie eine neue Anmeldesitzung starten.
Für das neueste MacOS (zum Zeitpunkt des Schreibens: 10.14.1) können Sie sudo launchctl limit maxfiles 64000 524288
verwenden (standardmäßig waren es 256), aber es funktioniert nur innerhalb der aktuellen Sitzung. Verwenden Sie den Job launchctl
von @ninjaPixel https://superuser.com/a/1171028/760235 ) für eine dauerhafte Lösung.
Sie können
lsof -n
sysctl -w kern.maxfiles=20480
ausführen, die zu viele Dateien öffnen.
tötet sie dann .
oder
&001
ändert sie in eine größere Datei.
Nachdem alle Änderungen über meinem Java nicht mehr als 10000 Dateien erzeugt haben. Die Lösung war dieses jvm-Flag -XX:-MaxFDLimit
Ähnlich wie https://superuser.com/a/1171028/367819
Um die aktuellen Grenzen auf Ihrem Mac OS X-System zu überprüfen, führen Sie aus:
launchctl limit maxfiles
Die letzten beiden Spalten sind die weichen bzw. harten Grenzen.
Um die Grenzen für offene Dateien in Mac OS X Yosemite systemweit anzupassen, müssen Sie zwei Konfigurationsdateien anlegen. Die erste ist eine Property-List-Datei (aka plist) in /Library/LaunchDaemons/limit.maxfiles.plist, die die folgende XML-Konfiguration enthält:
<?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>200000</string>
<string>200000</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
Dadurch wird das Limit für offene Dateien auf 200000 gesetzt. Die zweite Plist-Konfigurationsdatei sollte in /Library/LaunchDaemons/limit.maxproc.plist mit folgendem Inhalt gespeichert werden:
<?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>
Beide Plist-Dateien müssen im Besitz von root:wheel sein und die Berechtigungen -rw-r–r– haben. Diese Berechtigungen sollten standardmäßig vorhanden sein, aber Sie können sicherstellen, dass sie vorhanden sind, indem Sie sudo chmod 644 ausführen. Während die oben erläuterten Schritte dazu führen, dass systemweite Begrenzungen für offene Dateien beim Neustart korrekt gesetzt werden, können Sie sie manuell anwenden, indem Sie launchctl limit ausführen.
Zusätzlich zum Setzen dieser Begrenzungen auf Systemebene empfehlen wir, sie auch auf Sitzungsebene zu setzen, indem Sie die folgenden Zeilen an Ihre bashrc-, bashprofile- oder analoge Datei anhängen:
ulimit -n 200000
ulimit -u 2048
Wie die Plist-Dateien sollte Ihre bashrc- oder ähnliche Datei die Berechtigungen -rw-r–r– haben. An diesem Punkt können Sie Ihren Computer neu starten und ulimit -n in Ihr Terminal eingeben. Wenn Ihr System richtig konfiguriert ist, sollten Sie sehen, dass maxfiles auf 200000 gesetzt wurde.
Weitere Einzelheiten finden Sie in diesem Artikel. https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Denken Sie daran, Ihren Mac neu zu starten, damit die Werte wirksam werden.