// Snippet

macOS: Too many open files

Vor kurzem hat sich MariaDB unter macOS mit dem Fehler "Too many open files" verabschiedet. Der Fehler ist beim Schreiben bzw. Erzeugen von Tabellen aufgetreten. Die Anwendung konnte nach dem Neustart von MariaDB nicht mehr auf die Datenbank zugreifen. Die Datenbank war korrupt. MariaDB ist an diesem Fehler nicht direkt schuld, sondern macOS. Da parallel noch einige weitere Anwendungen, wie z.B. Elasticsearch, liefen, hat ein Limit von macOS gegriffen.

Das Limit für parallel geöffnete Dateien kannst du dir mit dem folgenden Befehl anzeigen lassen:

$ launchctl limit maxfiles
  maxfiles    256            unlimited

Das Soft-Limit (erster Wert) ist in meinem Fall einfach zu niedrig gewesen. Um das Limit zu erhöhen, musst die Datei /Library/LaunchDaemons/limit.maxfiles.plist angelegt werden. Der Inhalt sieht wie folgt aus:

<?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>

Damit wird das Soft-Limit auf 64000 und das Hard-Limit auf 524288 gesetzt. Für die Datei muss der Eigentümer angepasst werden. Die Änderungen werden wirksam, nachdem der Mac neugestartet wurde.

sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist

Nach dem Neustart kann mit dem ersten Befehl erneut das Limit geprüft werden. MariaDB läuft seit den Änderungen ohne Probleme.

Quelle:
Vermutlich verwendest du einen veralteten Browser. Da diese Website auf moderne Technik setzt, benötigst du einen aktuellen Browser, um diese Website richtig darzustellen.