Estoy haciendo un hosting de alta densidad de aplicaciones ASP.NET MVC 5 / WCF en Azure App Service y las aplicaciones inactivas están usando 600 ~ 1000MB de memoria cada una, lo que es bastante, dado que un volcado de memoria revela que el montón GC es solo alrededor de ~ 40MB completos. Sospecho que esto se debe al servidor GC, así que intenté deshabilitarlo siguiendo https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcserver-element y agregando
<gcServer enabled="false" />
a mi web.config, pero esto no parece tener ningún efecto como
GCSettings.IsServerGC
sigue volviendo cierto. que me estoy perdiendo aqui?
EDITAR:
El uso de IIS normal se puede hacer usando https://weblogs.asp.net/owscott/setting-an-aspnet-config-file-per-application-pool pero en Azure App Service, carece de los permisos para hacerlo.
fuente
Respuestas:
Ok, en primer lugar, parece que podría tener que depurar manualmente el uso de memoria de los componentes usando GC.Collect (): https://docs.microsoft.com/en-us/dotnet/api/system.gc.collect ? view = netcore-3.1
De esta manera, es posible que pueda identificar una parte específica del código que causa una pérdida de memoria debido a una mala recolección de elementos no utilizados o partes que utilizan ciertas bibliotecas de terceros.
Una vez que haya terminado con esta parte bastante tediosa, dependiendo de lo que piense que está causando el problema, debería considerar usar una eliminación manual del bloque de código utilizando
(using var item = new NameOfClass())
o incluso intentar implementarloIDispose
en las clases que lo están causando: https: / /docs.microsoft.com/en-us/dotnet/standard/garbage-collection/implementing-dispose .fuente