GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Beheben des MySQL-Fehlers:Zu viele offene Dateien

Einführung:
Als ich von Mysql 5.5 auf 5.6 aktualisierte, zeigten einige Websites plötzlich den folgenden Fehler:
...... Too many open files
Das Problem hat mit den derzeitigen Beschränkungen des Systems und des PAM-Systems zum Öffnen von maximal 1024 Dateien zu tun. Nach einiger Recherche habe ich diese Seite hier unten auf Deutsch gefunden, auf der folgendes erklärt wird:
https://www.filewalker.de/ulimit-mysql-open_files_limit/

SCHRITTE:
Überprüfen Sie die Grenzen zum Öffnen von Dateien oder führen Sie den MySQL-Server aus:
mysql -p -u root
mysql> SHOW VARIABLES LIKE 'open%';

Die sehr mögliche Ausgabe:
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1024 |
+------------------+-------+
1 row in set (0.00 sec)

Das bedeutet, dass der Mysql-Server maximal 1024 öffnen darf, was für Mysql 5.6 zu wenig erscheint.

Dieses Limit erhöhen
Bearbeiten Sie die Datei /etc/security/limits.conf und fügen Sie die folgenden Zeilen hinzu:
mysql hard nofile 65535
mysql soft nofile 65535

Dadurch wird das Limit der offenen Dateien für den Benutzer mysql auf 65535 erhöht nur.
Wenn Sie dieses Limit für alle Benutzer erhöhen möchten, ersetzen Sie das Wort mysql für *
z. B.
* hard nofile 65535
* soft nofile 65535

Und entsprechend dieser Seite bearbeiten Sie die Datei /etc/pam.d/common-session und fügen Sie am Ende diese Zeile hinzu:
session required pam_limits.so
Hinweis: Ich bin mir nicht sicher, ob dieser Schritt wirklich notwendig ist. Einige Leute haben es ohne versucht und es hat auch funktioniert. Für mich musste ich das in Debian Wheezy tun, sonst bekam ich immer noch den Fehler.

Für Systeme, die systemd anstelle von InitV ausführen, gehen Sie wie folgt vor:
Bearbeiten Sie die Datei /usr/lib/systemd/system/mysqld.service
Fügen Sie diese 2 Zeilen am Ende hinzu:
LimitNOFILE=65535
LimitNPROC=65535

Starten Sie den MySQL-Server neu und testen Sie ihn erneut
service mysql restart
mysql -p -u root
mysql>> SHOW VARIABLES LIKE 'open%';

Das hoffnungsvolle Ergebnis:
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65535 |
+------------------+-------+
1 row in set (0.00 sec)

Dieser Fehler sollte nicht mehr auftreten.


Linux
  1. Zu viele Verbindungsfehler in MySQL

  2. udev starten:udevd inotify_init fehlgeschlagen:zu viele offene Dateien

  3. Dateien können nicht aus dem Verzeichnis entfernt werden mit Fehler „Argumentliste zu lang“

  4. Verbindung zum MySQL-Server nicht möglich Fehler 111

  5. Schwerwiegender Fehler:Berechtigungstabellen können nicht geöffnet und gesperrt werden:Tabelle „mysql.host“ existiert nicht

So erhöhen Sie das Limit für die Anzahl der geöffneten Dateien in Linux

Fehlerbehebung:Zu viele Weiterleitungen

s3cmd schlägt zu oft fehl

Zu viele offene Dateien (CentOS7) - bereits versucht, höhere Limits einzustellen

Zu viele Ebenen symbolischer Links

Zu viele offene Dateien auf Debian