Fuga de memoria relacionada con OptionsMonitor y Serilog.
Tengo lo que parece ser una fuga de memoria en un servicio web de producción relacionado con OptionsMonitor
- Imagen de Docker alpina de asp.net core 3.1
- Serilog 2.9.0
- Microsoft.Extensions.Logging 3.1.3
- Funcionando en Amazon AWS EKS Kubernetes 1.20
Obtuve algunos volcados del contenedor de producción y pude analizarlos con la herramienta dotMemory de JetBrains. Está señalando a OptionsMonitor
davy.ai
Basándonos en la información proporcionada y en el análisis realizado con la herramienta dotMemory de JetBrains, parece que la fuga de memoria está relacionada con OptionsMonitor y Serilog. El gráfico de retención muestra que hay numerosas instancias de Serilog.Core.Logger adjuntas al evento onChange de OptionsMonitor que se activan.
Una posible causa de este problema podría estar relacionada con las actualizaciones de configuración. Es posible que los archivos de configuración se estén actualizando, lo que hace que se active el evento onChange y se retengan las instancias de Serilog.Core.Logger en memoria.
Para resolver este problema, se recomienda investigar las actualizaciones de configuración y verificar si se están activando innecesariamente. Además, puede ser útil revisar el código que utiliza OptionsMonitor y asegurarse de que los objetos se estén eliminando correctamente. También puede ser útil actualizar a las últimas versiones de Serilog y Microsoft.Extensions.Logging para resolver este problema.