Wenn die Anzahl der MySQL-Clients die maximale Anzahl an Verbindungen überschreitet, melden Treiber in verschiedenen Sprachen den Fehler "Zu viele Verbindungen".
Java-Programmfehler:
Datenquelle lehnte die Verbindung ab, Nachricht vom Server: "Zu viele Verbindungen"
.NET Core Programmfehler:
Zu viele Verbindungen Oder so Fehler beim Verbinden: Timeout ist abgelaufen. Die Timeout-Frist lief ab, bevor eine Verbindung aus dem Pool erhalten wurde. Dies könnte geschehen sein, weil alle Pool-Verbindungen in Betrieb waren und die maximale Poolgröße erreicht wurde.
Verwenden Sie folgenden Befehl, um die maximale Anzahl der Verbindungen und die aktuelle Anzahl der Verbindungen anzuzeigen:
Setzen Sie vorübergehend die maximale Anzahl von Verbindungen,Du musst den MySQL-Server nicht neu starten, aber die Einstellung wird ungültig, wenn du den MySQL-Dienst neu startest:
Du kannst die maximale Anzahl der Verbindungen zur Datenbank dauerhaft in /etc/my.cnf festlegen:
Wenn wir die maximale Anzahl von Verbindungen setzen und mit einem .NET-Programm testen, lautet der Fehler weiterhin wie folgt:
Fehler beim Verbinden: Timeout ist abgelaufen. Die Timeout-Frist lief ab, bevor eine Verbindung aus dem Pool erhalten wurde. Dies könnte geschehen sein, weil alle Pool-Verbindungen in Betrieb waren und die maximale Poolgröße erreicht wurde. Dies liegt daran, dass .NET-Clients standardmäßig Thread-Pools verwenden und das maximale Limit für Thread-Pools standardmäßig bei 100 liegt.
Der Hyperlink-Login ist sichtbar.
WirSchließe den Pooling-Threadpool, ohne den Threadpool zu verwenden, gibt es keine Begrenzung, der Test ist gleichzeitig mit 500 Threads und es wird kein Fehler gemeldet, wie in der untenstehenden Abbildung dargestellt:
Der .NET/C#-Testcode sieht so aus:
(Ende)
|