Erhöhung des Yosemite-Maxfile-Limits für die Anwendung

5609
toadstool333

Ich habe versucht, das Maxfile-Limit und das Maxfileperproc-Limit auf Yosemite zu erhöhen, ohne Glück. Ich habe eine sysctl.conf -Datei im Ordner etc erstellt, die die Werte bei der Anzeige über grep erfolgreich erhöht hat.

Wenn ich mir launchctl limit maxfiles anschaue, ist der Wert jedoch immer noch falsch.

Einige Lösungen scheinen ulimit -n zu verwenden, um den Grenzwert festzulegen, aber im Terminal kann ich das nicht wirklich verwenden. Es gibt einen Fehler "Ungültiges Argument" oder "Nicht autorisierte Operation". Ich habe Ulimit durch ein bash_profile-Skript erfolgreich erhöht, aber da die Anwendung von Applications aus und nicht von der Shell aus ausgeführt wird, ist sie irrelevant. Ich habe auch ulimit durch den root-Benutzer erfolgreich erhöht, aber wenn das abgemeldet ist, werden die Änderungen nicht gespeichert.

Idealerweise suche ich nach etwas, das wie die Datei launchd.conf funktioniert, und erhöht maxctes {#} launchctl limit automatisch beim Neustart.

Gibt es eine Möglichkeit, dies erfolgreich zu tun? Vielleicht mit einer dritten Partei wie Lingon oder mit einem Start-Daemon?

Vielen Dank!

5

1 Antwort auf die Frage

8
mbb

Das habe ich dank des Spiels mit Riak von Basho herausgefunden . Die Anweisungen für Yosemite sind:


Um die Beschränkungen für offene Dateien systemweit in Mac OS X Yosemite anzupassen, müssen Sie zwei Konfigurationsdateien erstellen.

Die erste ist eine Eigenschaftslistendatei (aka plist) /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>65536</string> <string>65536</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceIPC</key> <false/> </dict> </plist> 

Dadurch wird das Limit für offene Dateien auf 65536 festgelegt. Die zweite Plist-Konfigurationsdatei sollte /Library/LaunchDaemons/limit.maxproc.plistmit 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 Eigentümer sein root:wheelund über Berechtigungen verfügen -rw-r--r--. Diese Berechtigungen sollten standardmäßig vorhanden sein. Sie können jedoch sicherstellen, dass sie vorhanden sind, indem Sie sie ausführen sudo chmod 644 <filename>. Während die oben beschriebenen Schritte dazu führen, dass systemweite Grenzwerte für das Öffnen offener Dateien beim Neustart korrekt festgelegt werden, können Sie sie durch Ausführen manuell anwenden launchctl limit.

Neben diesen Grenzen auf Systemebene einstellen, empfehlen wir die auf Sitzungsebene als auch durch Anhänge die folgenden Zeilen zu Ihrer Einstellung bashrc, bashprofileoder analog - Datei:

ulimit -n 65536 ulimit -u 2048 

Wie die plist-Dateien sollte Ihre bashrcoder eine ähnliche Datei über -rw-r--r--Berechtigungen verfügen . An diesem Punkt können Sie Ihren Computer neu starten und ulimit -nin Ihr Terminal eingeben . Wenn Ihr System korrekt konfiguriert ist, sollten Sie sehen, dass maxfiles auf 65536 eingestellt wurde.


Der Prozess ist in anderen Versionen von OS X etwas anders, aber auch von diesem Team gut dokumentiert. Nochmals vielen Dank an das Team von Basho für die Dokumentation dieses Prozesses.

Ich habe gerade durchgegangen und ich kann bestätigen, dass es funktioniert (10.10.2), aber es gibt ein paar Anmerkungen: 1) ein Neustart ist erforderlich. Das Ausführen von 'launchctl limit' hat für mich nicht funktioniert. 2) Diese beiden ulimit-Befehle schlagen vor einem Neustart fehl (und ich denke, das ist unnötig?), diesen Teil habe ich einfach ignoriert. Cory Mawhorter vor 9 Jahren 0
Basierend auf meinen Tests beträgt der maximal zulässige Wert für maxproc in Yosemite 2500. "launchctl limit maxproc 2500" funktioniert, aber größere Werte werden still ignoriert. Ich bin sicher, das ist irgendwo in der Dokumentation ... vor 8 Jahren 1
@JLG Hilfreich zu wissen. Angesichts der Tatsache, dass der Startpunkt auf meinem MacPro 1064 zu sein scheint, sind das nur x2,5, was im Vergleich zu meiner Hoffnung, es auf 10-15k-Prozesse zu steigern, 20 Roboter Roboterbenutzer mit parallelen iOS-Simulatoren unterstützt . Sieht so aus, als müssten wir einige der älteren 8-Core-Mac-Minis ausfindig machen und sie ausweichen. android.weasel vor 8 Jahren 0
Eigentlich war das kein Mac Pro - es war ein Mac Pro, der von einem Mac Mini bootete, der vorgab, eine Festplatte zu sein. Vielleicht gibt es eine tatsächliche Server-Version von MacOs, die höher sein kann? android.weasel vor 8 Jahren 0