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

MySQL-Serverfehler – „Kann keinen neuen Thread erstellen (Errno 11)“

Betriebssystemfehler 11 ist „Ressource vorübergehend nicht verfügbar“. Die häufigste Ursache für diesen Fehler beim Versuch, einen neuen Thread zu erstellen, ist, dass der Kernel des Prozesses ein Limit für offene Dateideskriptoren erzwungen hat. Die zweithäufigste Ursache ist, dass das vom Kernel erzwungene Limit des Prozesses für die Anzahl der Prozesse/Threads erreicht wurde.

Hier sind die beteiligten Faktoren:

  1. Die systemweiten Limits:sysctl -e fs.file-max &&sysctl -e kernel.threads-max
  2. Die Beschränkungen pro Prozess (in einer *neuen* Shell):ulimit -n, grep nofile /etc/security/limits.conf und ulimit -u, grep nproc /etc/security/limits.conf.
  3. Die Einstellung open_files_limit in mysqld (mysql> zeigt globale Variablen wie „open_files_limit“;).
  4. Die anderen Einstellungen in mysqld, die die Anzahl der offenen FDs und Threads beeinflussen können, die der Prozess verwenden darf (max_connections, thread_cache_size, table_open_cache, table_definition_cache, innodb_open_files usw.)

Angenommen, wir haben tatsächlich das Open-Files-Limit erreicht, das auf den meisten Linux-Systemen standardmäßig auf 1024 eingestellt ist – wir sollten in der Lage sein, das Problem zu vermeiden, indem wir diese Schritte ausführen:

1. Erhöhen des expliziten Limits für offene Dateien in mysqld durch Vornehmen dieser Änderung an der Datei my.cnf:

[mysqld]

# Here X could be (max_connections+table_cache)*3  OR you could simply set it very high, for example 32000
open-files-limit = X 

2. Starten Sie den mysqld-Dienst neu:

/etc/init.d/mysql restart

NPROC-Grenzen

Wenn sich stattdessen herausstellt, dass das nproc-Limit die Ursache ist (CentOS 6 legt hierfür in /etc/security/limits.conf ein niedriges Limit fest), dann können wir das nproc-Limit auf verschiedene Arten erhöhen.

1. Limits.conf bearbeiten:

Wir können die Limits für den mysql-Benutzer in der Datei limits.conf festlegen, zum Beispiel:

mysql soft nproc 10240
mysql hard nproc 40960

Beachten Sie, dass limits.conf nur für Login-Shells gilt und sich nicht auf Prozesse auswirkt, die von init oder systemd gestartet werden. Alle Änderungen an der limits.conf gelten nur für neue Anmeldungen, Sie müssen sich abmelden und wieder anmelden, um eine neue Sitzung zu starten.

2. Bearbeiten Sie das mysqld_safe-Skript:

Wir können auch einfach einen ulimit-Aufruf am Anfang des mysqld_safe-Skripts hinzufügen, zum Beispiel:

$ ulimit -u 40000

3. Verwenden Sie ein Wrapper-Skript:

Beziehen Sie sich auf den folgenden Beitrag „How to use a Wrapper Script to set Custom Per-Process Attributes for MySQL Server“.

So verwenden Sie ein Wrapper-Skript, um benutzerdefinierte Pro-Prozess-Attribute für MySQL Server festzulegen

Wir müssen mysqld neu starten, damit die Änderungen wirksam werden.


Linux
  1. Erstellen Sie eine neue Datenbank und verwenden Sie sie in MySQL/MariaDB

  2. Fehler 1130 Verbinden mit Mysql auf Ubuntu Server 12.04?

  3. Pitchfork:Server erstellen

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

  5. Fehler:„Verbindung zum lokalen MySQL-Server über Socket „/var/run/mysqld/mysqld.sock“ (2) nicht möglich“ – Fehlende /var/run/mysqld/mysqld.sock

So erstellen Sie einen neuen WordPress-Admin-Benutzer über MySQL

So erstellen Sie einen neuen MySQL-Benutzer über phpMyAdmin

Wie erstelle ich eine neue MySQL-Datenbank und einen neuen Benutzer?

Wie kann ich eine neue MySQL-Datenbank in cPanel erstellen?

So erstellen Sie einen neuen Atlantic.Net-Cloud-Server

Erstellen Sie einen Cloud-Server