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 abgestimmt HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Schlüsselwerte TcpTimedWaitDelay
und MaxUserPort
bis 30 und 65530 ist.
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 TCP-Portbereich 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 des Computers kann die Situation beheben.
Könnte es sich um ein Netzwerkadapterproblem handeln?
UPDATE 1
Es passierte erneut und schien behoben zu sein, als ich den Mailserver neu startete. Seltsamerweise zeigten alle Zähler ~ 1000 Verbindungen, wobei ~ 500 im Moment aktiv sind, und immer noch den 10055-Socket-Fehler beim Versuch, eine Verbindung zur Datenbank herzustellen, die nichts mit dem Mailserver zu tun hat.
UPDATE 2 Das ist seltsam, aber der tägliche Neustart der Mail-Dienste behebt das Problem vollständig.
quelle
Antworten:
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 für mich stabil:
Im Ergebnis das gleiche wie bei Ihnen. 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 Ihnen dieser Artikel irgendwie helfen: http://blogs.technet.com/b/tristank/archive/2008/03/11/maxuserport-what-it-is-what-it-does-when-it- s-wichtig.aspx
quelle
MaxUserPort
2012 noch? Ich dachte im Jahr 2012 müssen Sie es über Netsh tun. zB:netsh int ipv4 set dynamicport tcp start=25535 num=40000
Zusätzlich zu den Tcpip-Treibereinstellungen wird der kurzlebige TCP-Portbereich in Windows Server mit dem Befehl netsh ( Quelle ) verwaltet.
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
Beispielsweise:
netsh int ipv4 set dynamicport tcp start=49152 num=16384
Die Einstellung (start = 49152 num = 16384 ) ist auch unter Windows Server 2008 die Standardeinstellung .
quelle
Hatte das gleiche Problem unter Windows Server 2016 , auf dem große Mengen von Selenium-Tests mit Chromewebdriver ausgeführt wurden. Dieses PS-Skript konfiguriert automatisch die oben freigegebenen Einstellungen @Myke. Der
shutdown
Befehl wurde hinzugefügt, da für die Änderungen des TCP-Stacks ein Neustart erforderlich ist.Erhöhen Sie die Poolgröße für kurzlebige TCP-Ports
Dies war die Fehlermeldung, die wir erhielten
Webdriver.Quit()
, als uns mitgeteilt wurde, dass eine TCP-Adresse verwendet wurde.quelle
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, über das ASP Sie nicht direkt informiert.
quelle