Nachdem wir unseren Stresstest auf unseren ASP.NET-Anwendungszugriff auf interne Webdienste durchgeführt hatten, zeigte unser Mid-Tier-Server (wo wir ASMX .NET 3.5-Webdienste hosten) nahezu 1 GB Speicherverbrauch..NET Speicherleck
Nach der Überprüfung des Speicherabbilds vom Mid-Tier-Server habe ich über 1000 Objekte von Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer gefunden, auf die von der Web-Services-Laufzeit selbst verwiesen wird.
Ist dies etwas damit, wie unsere benutzerdefinierten Objekte in der Web-Services-Schicht serialisiert/deserialisiert werden? Könnte jemand mehr Licht auf dieses Thema werfen? !
Als ich gcroot tat auf einige dieser 1000 Objekte, bekam ich die folgende Spur: (Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Storage.ConfigurationChangeFileWatcher) -> 1c4bb450 (System.Threading.Thread) - > 18236aa0 (System.Runtime.Remoting.Contexts.Context) -> 18.236.914 (System.AppDomain) -> 10409dc4 (System.ResolveEventHandler) -> 10.409.494 (System.Web.Compilation.BuildManager) -> 10409f30 (System.Web.Compilation.MemoryBuildResultCache) -> 103d115c (System.Web.Caching.CacheMultiple) -> 103d1174 (System.Object []) -> 103d2034 (System.Web.Caching.CacheSingle) -> 103d2080 (System.Collections.Hashtable) -> 1c24b97c (System.Collections.Hashtable + bucket []) -> 1c24b934 (System.Web.Caching.CacheEntry) -> 18.363.994 (System.Web.Services.Protocols. SoapServerType) -> 183639c4 (System.Collections.Hashtable) -> 1c24aa5c (System.Collections.Hashtable + bucket []) -> 1c24a458 (System.Web.Services.Protocols.SoapServerMethod) -> 1c248ae4 (Microsoft. Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer26)
(Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Storage.ConfigurationChangeFileWatcher) -> 1c5ac4b0 (System.Threading.Thread) -> 1c52b5f0 (System.Runtime.Remoting.Contexts.Context) -> 1c52b464 (System.AppDomain) -> 18.823.880 (System.ResolveEventHandler) -> 18822f50 (System.Web.Compilation.BuildManager) -> 188239e0 (System .Web.Compilation.MemoryBuildResultCache) -> 144631fc (System.Web.Caching.CacheMultiple) -> 14.463.214 (System.Object []) -> 14.465.088 (System.Web.Caching.CacheSingle) -> 144650d4 (System .Collections.Hashtable) -> 1446510c (System.Collections.Hashtable + bucket []) -> 1c5a580c (System.Web.Caching.CacheEntry) -> 109e6e34 (System.Web.Services.Protocols.SoapServerType) -> 109e6e64 (System.Collections.Hashtable) -> 1c5a4fcc (System.Collections.Hashtable + bucket []) -> 1c5a4a54 (System.Web.Services.Protocols.SoapServerMethod) -> 1c5a44f4 (Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer28)
(Microsoft.Practices. EnterpriseLibrary.Common.Configuration.Storage.ConfigurationChangeFileWatcher) -> 108b38f0 (System.Threading.Thread) -> 1c1155ec (System.Runtime.Remoting.Contexts.Context) -> 1c115460 (System.AppDomain) -> 1030d348 (System.ResolveEventHandler) -> 1030ca18 (System.Web.Compilation.BuildManager) -> 1030d4a0 (System.Web.Compilation.MemoryBuildResultCache) -> 102d7ae4 (System.Web.Caching.CacheMultiple) -> 102d7afc (System.Objekt []) -> 102d7b1c (System.Web.Caching.CacheSingle) -> 102d7b68 (System.Kollektionen.Hashtabelle) -> 102d7bac (System.Collections.Hashtable + bucket []) -> 181ee124 (System. Web.Caching.CacheEntry) -> 10350eac (System.Web.Services.Protocols.SoapServerType) -> 10350edc (System.Collections.Hashtable) -> 181ed260 (System.Collections.Hashtable + bucket []) -> 181ed148 (System.Web.Services.Protocols.SoapServerMethod) -> 181eb708 (Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer61)
Dank BK
i empfehlen dringend zu WCF zu bewegen. – Andrey
würde ich gerne. Dies ist bestehender Code und wir haben kürzlich auf ASP.NET 3.5 aktualisiert –