Wenn Sie einen MySQL Server auf Windows mit vielen
TCP/IP-Verbindungen ausführen und Ihre Clients häufig einen
Can't connect to MySQL server
-Fehler
melden, könnte es sein, dass Windows nicht genügend
vorübergehende (kurzlebige) Ports erlaubt, um diese
Verbindungen zu ermöglichen.
Nach Voreinstellung gestattet Windows 5000 vorübergehende
(kurzlebige) TCP-Ports. Wenn ein Port geschlossen wird,
verbleibt er 120 Sekunden lang in einem
TIME_WAIT
-Status. Wird die Verbindung in
diesem Status wiederverwendet, so entstehen viel weniger
Kosten als bei der Einrichtung einer neuen Verbindung.
Allerdings steht der Port vor Ablauf dieser Zeit nicht zur
Verfügung.
Wenn Sie nur einen kleinen Vorrat verfügbarer TCP-Ports
(5000) haben und viele dieser Ports in kurzer Zeit geöffnet
und mit dem TIME_WAIT
-Status wieder
geschlossen werden, kann es leicht passieren, dass Ihnen die
Ports ausgehen. Es gibt zwei Möglichkeiten, dieses Problem in
den Griff zu bekommen:
Sie sorgen dafür, dass die TCP-Ports nicht so schnell aufgebraucht werden, indem Sie, wo immer es möglich ist, Verbindungspooling oder persistente Verbindungen in Betracht ziehen.
Sie ändern einige Einstellungen in der Windows-Registrierung (siehe weiter unten).
Wichtig: Im folgenden Verfahren wird die Windows-Registrierung geändert. Bevor Sie dies tun, müssen Sie Ihre Registrierung unbedingt sichern und genau wissen, wie Sie sie wiederherstellen können, falls etwas geschieht. Wie man die Registrierung sichert, wiederherstellt und bearbeitet, verrät Ihnen folgender Artikel aus der Microsoft Knowledge Base: http://support.microsoft.com/kb/256986/EN-US/.
Starten Sie den Registrierungs-Editor
(Regedt32.exe
).
Suchen Sie folgenden Registrierungsschlüssel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Klicken Sie im Menü Bearbeiten
auf
Wert hinzufügen
und fügen Sie dann
folgenden Registrierungswert ein:
Value Name: MaxUserPort Data Type: REG_DWORD Value: 65534
Dieser Wert stellt ein, wie viele vorübergehende Ports einem Benutzer zur Verfügung stehen. Der zulässige Wertebereich liegt zwischen 5000 und 65534 (Dezimalsystem). Der Standardwert ist 0x1388 (5000 dezimal).
Klicken Sie im Menü Bearbeiten
auf
Wert hinzufügen
und fügen Sie dann
folgenden Registrierungswert hinzu:
Value Name: TcpTimedWaitDelay Data Type: REG_DWORD Value: 30
Hiermit stellen Sie ein, wie viele Sekunden eine
Verbindung mit einem TCP-Port im
TIME_WAIT
-Status verbleibt, ehe sie
geschlossen wird. Der zulässige Wertebereich liegt
zwischen 0 (null) und 300 (dezimal). Der Standardwert ist
0x78 (120 dezimal).
Schließen Sie den Registrierungs-Editor.
Starten Sie den Computer neu.
Hinweis: Um die obigen Änderungen rückgängig zu machen, löschen Sie einfach die Registrierungseinträge, die Sie erstellt haben.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.