Ich habe eine WCF-Anwendung in IIS gehostet (geschrieben in C#/.Net 4
). Mit der Zeit nimmt die Anzahl der Handle des Prozesses mehr oder weniger linear zu (bis zu 30.000, bevor der Prozess recycelt wird). Nach SysInternals Process Explorer ist der Großteil der Handles, die der Prozess hat, vom Typ Thread
. Laut Systemmonitor bleibt die Anzahl der Threads jedoch mehr oder weniger konstant (etwa 40)."Leaking" Thread Handles
Klar mache ich etwas falsch und lecke Thread Handles
. Allerdings ist mir unklar, was genau ein Thread Handle
in diesem Zusammenhang ist. Ich hätte angenommen, dass es ein Handle zu einem Thread ist, aber da die Anzahl der Threads konsistent bleibt, sehe ich nicht, wie die Anzahl der Handle immer zunimmt. Und ich kann mir keinen Weg vorstellen, um einen Thread im Griff zu behalten, während der Thread selbst verschwindet. Außerdem erstelle ich nicht explizit neue Threads (ich verwende den ThreadPool
an Orten).
Offensichtlich fehlt mir etwas. Aber was?
Haben Sie den WCF-Dienst als SingleInstance, PerCall oder Session? Verwenden Sie dort einen IoC-Container? – Jordi
Verwalten Sie die Threads selbst oder verwenden Sie den Thread-Pool? Welche Art von Threads verwenden Ihre Anwendung (reden wir über die Threads, die IIS ausführt -> begrenzt durch den IIS selbst oder Ihre eigenen Threads)? – Rafa
Der WCF-Dienst ist Einzelinstanz und mehrere Nebenläufigkeit. Kein IOC-Behälter. –