由serilog帶來的Memory Leak問題

應用裏面為了方便troubleshoot加了各種類型的log,Elasticsearch,APM,EF打印sql之類.

做性能測試的時候,很容易就内存飆高,導致IIS進程挂起來。

在siable了APM,并且log size和level做了各種限制后,記下的log file已經不會太大。

但IIS進程的内存占用率還是在飆升,create了dump后用 !dumpheap -stat 命令查看 ,大size的都是些 serilog object

最終確認是由於配置了 .Enrich.WithExceptionDetails() 引起的。

https://github.com/serilog/serilog/issues/1275

.Destructure.ToMaximumCollectionCount(10) // Default is int.MaxValue
			.Destructure.ToMaximumStringLength(1024) // Default is int.MaxValue
			.Destructure.ToMaximumDepth(5) // Default is 10
			.Enrich.WithExceptionDetails(new DestructuringOptionsBuilder()
				.WithDefaultDestructurers()
				.WithIgnoreStackTraceAndTargetSiteExceptionFilter()
				.WithDestructuringDepth(5) // default is 10
			)
原文地址:https://www.cnblogs.com/sui84/p/15468617.html