Ich habe eine verteilte Anwendung, die .NET Remoting in einem hausinternen Gigabit-Netzwerk verwendet. Es gibt einen einzelnen Server und über ein Dutzend Clients, die eine Verbindung zum Server herstellen. Die Clients führen mehrere Threads aus, und von jedem Client können bis zu 10 gleichzeitige Anforderungen auftreten.
Diese Anwendung funktioniert die meiste Zeit sehr gut. Der Server bleibt monatelang auf. Von Zeit zu Zeit bekomme ich eine Ausnahme auf einem Client, und ich kann nicht herausfinden, was die Ausnahme verursacht. Die Ausnahme- und Stack-Ablaufverfolgung sind:
%Vor%Das ist der Stack-Trace zurück zu dem, wo ich den Remoting-Aufruf mache.
Ich habe nachgeschaut und kann nichts Ungewöhnliches in den Anrufen finden, die ich mache, oder in den Daten, die der Server zurückgibt.
Google sucht nach diesem Fehler ist nicht sehr fruchtbar. Die meisten der Fehler, die ich gesehen habe, drehen sich darum, dass jemand von HTTP zu TCP konvertiert und nicht alles ändert. Daher erhalten sie die Ausnahme, wenn sie versuchen, eine Verbindung herzustellen. In meinem Fall wird der Client für Tage ausgeführt, bevor dieser Fehler auftritt.
Ein weiterer Datenpunkt: Der Server erhält viele Anfragen. Die meisten Clients sind Web-Crawler, die jede Minute mehr als 2.000 Anfragen an den Server senden. Der Server verarbeitet also mehr als 500 Anfragen pro Sekunde mit mehr Datenverkehr. In jedem Fall scheint der Server den Verkehr in Ordnung zu behandeln, und ich würde einen viel anderen Fehler erwarten, wenn der Server überlastet wird.
Irgendwelche Ideen, was diesen Fehler verursacht?
Dieser Fehler tritt normalerweise auf, wenn eine Nachricht mit falschen Headern empfangen wird. Sie können diesen Fehler beim Erstellen einer Telnet-Verbindung zu Ihrem Server wiederholen und etwas eingeben. In den meisten Fällen handelt es sich um einen Netzwerkfehler.
Ich empfehle dringend die Überprüfung Ihrer Firewall. Einige Firewalls löschen die Netzwerkpakete aufgrund eines falschen Angriffsalarms.
Load Balancing ist ein weiterer möglicher Grund. Load Balancer teilt Pakete auf verschiedene Server auf.
Ich habe dieses Problem, wenn MS DNS-Server zu viele offene Port verwendet, so dass ausgehender Port nicht erstellt werden kann. Ja, es ist sehr lustig.
Tags und Links .net remoting .net-remoting