Open Files Limit funktioniert nicht wie bisher in OSX Yosemite [duplizieren]

22

Ich habe gerade das Mac OS X auf Yosemite aktualisiert und jetzt funktionieren einige Anwendungen nicht mehr (IBM DB2). Ich weiß, dass ich Open Files auf 65000 setzen muss, aber der Befehl funktioniert nicht.

Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument

Warum passiert das und wie kann ich das Problem beheben?

AngocA
quelle

Antworten:

25

Es scheint, als gäbe es für jede Version von OS X eine völlig andere Methode, um das Limit für geöffnete Dateien zu ändern!

Für OS X Sierra (10.12.X) müssen Sie:

  1. In /Library/LaunchDaemonseine Datei mit dem Namen limit.maxfiles.plistund die folgende einfügen in (frei fühlen , die zwei Nummern zu ändern, die die weichen und harten Grenzen sind, respectively):

    <?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 Besitzer 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. Überprüfen Sie abschließend, ob die Grenzwerte korrekt sind:

    launchctl limit maxfiles
    
NinjaPixel
quelle
7
Freue mich auf eine neue Antwort für macOS 10.13! :)
NSTJ
1
Der Prozess hat bei mir erst nach einem Neustart funktioniert. Vielen Dank! es hat sehr geholfen
user2773086
Dieser Kern auch diese Dateien sagt Modifizierung ist die Art und Weise , diese offene Datei Grenze für Sierra zu aktualisieren gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Devin G Rhode
1
Ein Neustart ist erforderlich, damit die Grenzwerte funktionieren (auch wenn in Schritt 4 die aktualisierten Werte
angezeigt
21

Ich sehe, Sie haben diese Frage überall gestellt.

Es gibt ein Kernel-Limit, mit dem Sie sich befassen müssen: kern.maxfiles. Dies ist das Kernel-Limit und kann beim Setzen von ulimit nicht überschritten werden.

Eine Beschreibung zum Bearbeiten von kern.maxifiles mit sysctl finden Sie auf der Krypted-Blogseite Maximum Files in Mac OS X.

Ich habe Yosemite noch nicht auf meinen Mac geladen. Das sysctl -w kern.maxfiles=65000funktioniert auf Mavericks, die standardmäßig das gleiche Limit von kern.maxfiles = 12288 haben.

Ich habe mein VM OS X 10.6.8 überprüft und es hatte das gleiche Limit, was die Frage aufwirft, wie es früher vor Ihrer OS X-Version funktioniert hat.

Es gibt eine Folienfreigabe ( DB2 für Mac OS X Installieren und Einrichten von DB2 für Mac OS X ) mit den empfohlenen Grenzwerten für die Verwendung von DB2 (siehe Erhöhen der Systemparameter auf Seite 7).

Erhöhen Sie die Systemparameter

Öffnen Sie /etc/sysctl.conf (oder erstellen Sie es, falls es noch nicht vorhanden ist) und fügen Sie die folgenden Einstellungen ein. Diese Einstellungen erhöhen einige Einstellungen für den gemeinsam genutzten Speicher und Benutzerbeschränkungen, die DB2 für die Arbeit auf einem Mac benötigt.

Fügen Sie Folgendes zu /etc/sysctl.conf
hinzu: kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmall = 1179648
kern.maxfilesperproc = 65536
kern.maxfiles = 65536

Es hört sich so an /etc/sysctl.conf, als hätten Sie Ihre Datei beim Upgrade verloren.

user187561
quelle
Eigentlich habe ich DB2 vor langer Zeit installiert und es hat funktioniert. Dann habe ich letztes Jahr problemlos auf Maverick aktualisiert. Und heute habe ich auf Yosemite aktualisiert und dieses Problem erscheint. Ich kann mein bereits installiertes DB2 nicht starten.
AngocA
Eine andere Sache ist, dass meine sysctl.conf mit der Datei identisch ist, die Sie in Ihren Beitrag eingefügt haben. Ich habe DB2 zum ersten Mal (vor einem Jahr) installiert, es jedoch für die Migration nicht berührt.
AngocA
Das Problem waren einige Leerzeichen in dieser Datei: ibm.com/developerworks/community/forums/html/…
AngocA
1
Nachgestellte Leerzeichen, wer hätte das gedacht. Apple soll einige der besten Programmierer der Welt haben.
user187561
@ user187561 sysctl(8)stammt von BSD.
Drew Stephens
12

Unter Mac OS 10.10 kann die Einstellung ulimit die Einstellung für das Startlimit nicht überschreiten.

Sie sollten also zuerst launchctl limit maxfiles im Terminal ausführen , um die aktuelle Einstellung zu erhalten:

launchctl limit maxfiles
maxfiles    256            unlimited 

In meinem Fall ist das Soft-Limit also 256, das Hard-Limit ist unbegrenzt. Und dann, wenn ich das weiche Limit auf 512 setzen möchte:

sudo launchctl limit maxfiles 512 unlimited

Eine detaillierte Verwendung von launchctl zum Festlegen von Limits finden Sie hier: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html

imadcat
quelle
'launchctl Limit maxfiles 512 unbegrenzt' erscheint meine (weich, hart) Grenzen (512,10240) auf Yosemite 10.10.5 zu setzen auf 2015.09.30
Dave X
2
"launchctl limit maxfiles unlimited unlimited; launchctl limit maxfiles" gibt an, dass 10240 das größte Limit ist, das eingegeben werden kann. Die unbeaufsichtigte Verwendung größerer Nummern schlägt fehl und die Einstellung bleibt unverändert.
Dave X