2017-05-22 1 views
0

Wir haben einen Server mit Backplane implementiert, wo mehr als 100 Clients angeschlossen sind. Aber als wir es getestet haben, haben wir festgestellt, dass keiner von ihnen jemals wieder eine Verbindung herstellen kann, wenn die Verbindung unterbrochen wird. Außerdem haben wir eine hohe Anzahl von Threads (mehr als 5000) durch w3wp.exe festgestellt und dann stürzt IIS ab.SignalR statische Objekte innerhalb des Hubs führt zu einem erneuten Verbindungsaufbau mit Backplane

Um zu identifizieren, was die Ursache dafür ist, haben wir den Hub gereinigt und was wir fanden, war, dass wenn die Logger-Klasse entfernt wird, die Backplane perfekt funktioniert. Wir haben NLog Logger benutzt und als statischen Logger gestartet.

private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); 

Um zu bestätigen, ob es Probleme mit NLog ist haben wir ein anderes statisches Objekt im Inneren der Nabe Klasse, aber das zeigte auch die gleiche hohe Fadenverbrauch. Es scheint also so zu sein, dass Clients, wenn statische Objekte vorhanden sind, keine Verbindung herstellen können und Threads im w3wp.exe-Dienst häufig verwendet werden. Was ist die Ursache für diese Situation?

PS- Wir testeten mit SQL und Redis Backplane, die die gleichen genauen Ergebnisse zeigten.

Antwort

0

Das Problem war nicht die Verwendung der statischen Objekte im Hub, sondern die Verwendung von NLogTraceListener für Protokollsignalspuren.

Verwandte Themen