Nehmen wir an, Ihr System ist derzeit Unix-basiert (wie in Ihrer Problemstellung angegeben). Wenn dies richtig ist, können Sie auf folgende Probleme stoßen:
-
Sie haben keinen Speicher mehr verfügbar für MySQL.
Dies ist das wahrscheinlichste Problem, mit dem Sie konfrontiert sind. Jede Verbindung im Verbindungspool von MySQL benötigt Speicher, um zu funktionieren, und wenn diese Ressource erschöpft ist, können keine weiteren Verbindungen hergestellt werden. Natürlich können der Speicherbedarf und die maximalen Paketgrößen verschiedener Operationen in eingestellt werden Ihr Äquivalent zu
my.cnf
wenn Sie feststellen, dass dies ein Problem ist.Hier ist ein zusätzlicher Thread, der dabei helfen kann , aber Sie können auch einfachere Profilerstellungstools wie
top
verwenden um eine gute ungefähre Einschätzung dessen zu erhalten, was vor sich geht. -
Ihnen sind die Dateideskriptoren ausgegangen für Ihr MySQL-Benutzerkonto verfügbar.
Ein weiteres häufiges Problem:Wenn Sie versuchen, Anforderungen zu bedienen, die eine Datei-E / A über der Grenze von 1.024 (standardmäßig) erfordern, werden Sie auf Fälle stoßen, in denen die Operation einfach fehlschlägt. Dies liegt daran, dass die meisten Systeme ein weiches und ein hartes Limit für die Anzahl der offenen Dateideskriptoren angeben, die jedem Benutzer gleichzeitig zur Verfügung stehen können, und das Überschreiten dieses Schwellenwerts kann zu Problemen führen.
Dies weist normalerweise eine Reihe offensichtlicher Anzeichen auf, die in Ihren Protokolldateien zum Ausdruck kommen. Überprüfen Sie
/var/log/messages
und Ihre vergleichbaren Verzeichnisse (zum Beispiel/var/log/mysql
um zu sehen, ob Sie etwas Interessantes finden können. -
Sie sind auf einen Livelock oder Deadlock gestoßen Szenario, in dem Ihr Thread unerfüllbar ist.
Als Folge der Erschöpfung von Speicher und Dateideskriptoren können Threads ablaufen, wenn Sie die Rechenlast überschritten haben, die Ihr System verarbeiten kann. Diese Fehlermeldung wird nicht ausgegeben, aber darauf sollten Sie in Zukunft achten.
-
Ihrem System gehen die für
fork
verfügbaren PIDs aus .Ein weiteres häufiges Szenario:
fork
hat nur eine begrenzte Anzahl von PIDs zur Verfügung, die zu einem bestimmten Zeitpunkt verwendet werden können. Wenn Ihr System einfach overforked ist , wird es nicht mehr in der Lage sein, Anfragen zu bedienen.Die einfachste Überprüfung besteht darin, festzustellen, ob andere Dienste eine Verbindung zum Computer herstellen können. Wenn Sie zum Beispiel versuchen, sich per SSH in die Box einzuloggen und feststellen, dass dies nicht möglich ist, ist dies ein großer Hinweis.
-
Ein Upstream-Proxy oder Verbindungsmanager hat keine Ressourcen mehr und verarbeitet keine Anfragen mehr.
Wenn Sie eine Dienstschicht zwischen Ihrem Client und MySQL haben, sollten Sie sie überprüfen, um festzustellen, ob sie abgestürzt, hängengeblieben oder anderweitig instabil geworden ist. Es gilt der obige Hinweis.
-
Ihr Port-Mapper hat sich nach 65.536 Verbindungen erschöpft .
Unwahrscheinlich, aber wieder ein möglicher Erschöpfungsfall. Die Überprüfung der trivialen Serviceverbindung wie oben ist, ähm, auch hier die beste Anlaufstelle.
Kurz gesagt:Dies ist ein Ressourcenerschöpfungsszenario, einschließlich des Servers, der einfach "down" ist. Sie müssen Ihr System weiter profilieren, um zu sehen, was Sie blockieren. Die einzige Fehlermeldung, die uns in diesem Fall gibt, ist die Tatsache, dass die Ressource für den Client nicht verfügbar ist – wir müssten mehr Informationen über den Server sehen um ein angemesseneres Mittel zu bestimmen.