it-swarm.com.de

Windows Server 2012 R2 verfügt nicht über kurzlebige Ports, sollte dies jedoch nicht

Wir haben regelmäßig seltsame Probleme mit dem Netzwerk auf unserem dedizierten Server. Es läuft Windows Server 2012 R2 x64 auf Xeon E5620 mit 16 GB RAM und Intel 82575EB Netzwerkadapter).

Bitte beachten Sie, dass wir bereits HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters Schlüsselwerte TcpTimedWaitDelay und MaxUserPort bis 30 bzw. 65530.

Zu einem zufälligen Zeitpunkt reagieren unsere Websites nicht mehr. Der Grund dafür ist, dass sie keine Verbindung zu einer lokalen Datenbank herstellen können. Es ist ungefähr 2 Wochen Betriebszeit, wenn diese Probleme auftreten. Das Systemprotokoll erhält die TCPIP-Warnungen 4227 und 4231. Es heißt "Eine Anforderung zum Zuweisen einer kurzlebigen Portnummer aus dem globalen Port TCP Port Space ist fehlgeschlagen, da alle diese Ports verwendet werden.").

Wenn ich renne

Get-Counter -Counter \TCPv4\*

oder

Get-Counter -Counter \TCPv6\*

oder

netstat -abn | find /c ":"

Ich bekomme immer einen vernünftigen Wert von 500-1500 Verbindungen, was nicht einmal nahe an der 65K-Grenze liegt.

Außerdem wird "localhost" lokal nicht mehr in :: 1 aufgelöst und auf 127.0.0.1 zurückgesetzt
Nur ein erzwungener Neustart der Maschine kann die Situation beheben.

Könnte es sich um ein Netzwerkadapterproblem handeln?

PDATE 1

Es passierte erneut und schien behoben zu sein, als ich den Mailserver neu startete. Seltsamerweise zeigten alle Zähler ~ 1000 Verbindungen, wobei ~ 500 momentan aktiv sind, und immer noch den 10055-Socket-Fehler beim Versuch, eine Verbindung zur Datenbank herzustellen, die nichts mit dem Mailserver zu tun hat.

PDATE 2 Dies IS seltsam, aber der tägliche Neustart der Mail-Dienste behebt das Problem vollständig.

13
CamaroSS

Ich hatte fast 1 Monat lang ein ähnliches Problem mit einem erschöpften Pool von TCP/IP-Ports unter WinSvr 2012R2 x64, bei dem der Server keine neuen und TCP - Verbindungen mehr empfing. Also habe ich mit Registrierungswerten gespielt und diese sind stabil für mich:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpTimedWaitDelay"=dword:0000001e
"MaxUserPort"=dword:0000fffe
"TcpNumConnections"=dword:00fffffe
"TcpMaxDataRetransmissions"=dword:00000005
  • TcpTimedWaitDelay - 30
  • MaxUserPort - 65534
  • TcpNumConnections - sollte sich im Standardzustand befinden und auf maximal gedehnt sein = 16777214 sollte verhindern, dass der Server kurzlebige Ports erschöpft.
  • TcpMaxDataRetransmissions - Zeitlimit von TCP nicht bestätigte Datensegmente erneute Übertragung bei tatsächlicher Verbindung = 5.

Im Ergebnis das gleiche wie deins. Ich denke, Sie sollten in Betracht ziehen, Ihr Verhalten in Bezug auf die Leistung Ihrer Anwendungen/Skripte zu überprüfen. Wenn alles in Ordnung ist und nichts hilft, können Sie versuchen, den Proxyserver vor Ihren Webanwendungsserver zu stellen, zwei Knoten mit dem Webserver (IIS, Apache, ...) zu erstellen, die denselben statischen Inhalt gemeinsam nutzen und gleichzeitig auf dieselbe Datenbank zugreifen Zeit (wenn Sie genügend Ressourcen in Ihrem Unternehmen haben).

Vielleicht würde dieser Artikel Ihnen irgendwie helfen: http://blogs.technet.com/b/tristank/archive/2008/03/11/maxuserport-what-it-is-what-it-does- when-it-s-important.aspx

9
MyKE

Zusätzlich zu den Tcpip-Treibereinstellungen wird der kurzlebige Portbereich TCP] in Windows Server mit dem Befehl netsh ( Quelle ).

Sie können den dynamischen Portbereich mit den folgenden Befehlen anzeigen :

  • netsh int ipv4 show dynamicport tcp
  • netsh int ipv4 show dynamicport udp
  • netsh int ipv6 show dynamicport tcp
  • netsh int ipv6 show dynamicport udp

Verwenden Sie diesen Befehl, um den Portbereich zu ändern :

  • netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range

Zum Beispiel:

netsh int ipv4 set dynamicport tcp start=49152 num=16384

Die Einstellung (start = 49152 num = 16384 ) ist auch die Standard ab Windows Server 2008.

4
rustyx

Hatte das gleiche Problem auf Windows Server 2016 Ausführen großer Mengen von Selenium-Tests mit Chromewebdriver. Dieses PS-Skript konfiguriert automatisch die oben freigegebenen Einstellungen @Myke. Der Befehl shutdown wurde hinzugefügt, da für die TCP Stapeländerungen) ein Neustart erforderlich ist.

Erhöhen Sie die Poolgröße für kurzlebige TCP Ports)

Get-Item 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters' | New-ItemProperty -Name MaxUserPort -Value 65534 -Force | Out-Null
Get-Item 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters' | New-ItemProperty -Name TcpTimedWaitDelay -Value 30 -Force | Out-Null
Get-Item 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters' | New-ItemProperty -Name TcpNumConnections -Value 16777214 -Force | Out-Null
Get-Item 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters' | New-ItemProperty -Name TcpMaxDataRetransmissions -Value 5 -Force | Out-Null

shutdown -r -t 0

Dies war die Fehlermeldung, die wir auf Webdriver.Quit() erhalten haben und die uns mitteilte, dass eine TCP Adresse) verwendet wurde.

Fehler: EADDRINUSE Verbinde EADDRINUSE 127.0.0.1:12843 bei ClientRequest. (\ node_modules\Selenium-webdriver\http\index.js: 238: 15)
From: Aufgabe: WebDriver.quit ()

3

Haben Sie sichergestellt, dass keine Datenbankverbindungsobjekte verloren gehen? Sie müssen jede geöffnete Datenbankverbindung entweder explizit (mit try-finally) oder mit einem using {} -Block schließen. Dies ist ein häufiges Problem, von dem ASP nicht direkt berichtet).

1
James