记录大型 json 时发生 Serilog 内存泄漏

Serilog Memory leak when logging large json

提问人:cargt4 提问时间:11/16/2023 最后编辑:cargt4 更新时间:11/16/2023 访问量:71

问:

我有默认的记录器配置

var logger = new LoggerConfiguration();

Log.Logger = logger.CreateLogger();

当我在击中控制器内存之前发送 30Mb json 时,内存增加了 0.5GB

_logger.LogInformation($"Controller AddBatch {batch}");

此行会导致内存增加 2GB。此内存永远不会被处理掉。

    [HttpPost(Name = "Test")]
    public string Test([FromBody] JObject batch)
    {
        _logger.LogInformation($"Controller AddBatch {batch}");
        return "";
    }

编辑是因为我在简单的例子中复制了这个

C# .NET Serilog WebAPI

评论

1赞 Fildor 11/16/2023
_logger.LogInformation($"Controller AddBatchTimeLogs {batchTimeLogs}");=> 不要使用字符串插值。它可能不会立即解决整个问题,但肯定会改善这种情况。
1赞 Fildor 11/16/2023
还有:你真的需要记录整个事情吗?对我来说听起来有点矫枉过正。实际上是一个漏洞。恶意客户端可能只是发送一个巨大的 json 并将您吹出水面。
0赞 Nicholas Blumhardt 11/16/2023
复制到 github.com/serilog/serilog/issues/1982 进行一些讨论的地方。

答: 暂无答案