Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF核心日志记录内存泄漏(已解决)_C#_Linux_.net Core_Out Of Memory - Fatal编程技术网

C# EF核心日志记录内存泄漏(已解决)

C# EF核心日志记录内存泄漏(已解决),c#,linux,.net-core,out-of-memory,C#,Linux,.net Core,Out Of Memory,我有一个小的数字海洋液滴(1GB内存)运行最新的Ubuntu LTS。我创建了一个小型的DotNet core 3.1 MVC web应用程序(+DotNet core identity),它最终会达到任务限制,然后抛出(错误的)OOM异常 来自journalctl的代表性错误消息: Microsoft.AspNetCore.Server.Kestrel[13] Connection id "0HM1CRI33JJJE", Request id "0HM1CRI3

我有一个小的数字海洋液滴(1GB内存)运行最新的Ubuntu LTS。我创建了一个小型的DotNet core 3.1 MVC web应用程序(+DotNet core identity),它最终会达到任务限制,然后抛出(错误的)OOM异常

来自journalctl的代表性错误消息:

 Microsoft.AspNetCore.Server.Kestrel[13] Connection id "0HM1CRI33JJJE", Request id "0HM1CRI33JJJE:0000043E": An unhandled exception was thrown by the application. System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
 at System.Threading.Thread.StartInternal()
 at Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider..ctor(IOptionsMonitor`1 options)
 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
 at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
 at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
 at ... (etc)
重新启动时的服务状态:

Site.service - Description here
     Loaded: loaded (/etc/systemd/system/Site.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-07-22 17:08:51 UTC; 48s ago
   Main PID: 656469 (Site)
      Tasks: 21 (limit: 1075)
     Memory: 103.4M
     CGroup: /system.slice/Site.service
问题激活时的状态输出:

 Site.service - Description here
     Loaded: loaded (/etc/systemd/system/Site.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-07-22 17:08:51 UTC; 11min ago
   Main PID: 656469 (Site)
      Tasks: 1075 (limit: 1075)
     Memory: 176.1M
     CGroup: /system.slice/Site.service
分辨率

我是个白痴。如中所示,如果为每个上下文创建新的日志工厂,则可能会导致内存泄漏

错误代码:

            options.UseSqlite(SqliteDbContext.DataSource)
                .UseLoggerFactory(LoggerFactory.Create(x => x.AddConsole())); // log SQL to console
正确代码:

            options.UseSqlite(SqliteDbContext.DataSource)
                .UseLoggerFactory(_loggerFactory) // _loggerFactory is now a static property

你能提供更多的信息吗?这是什么版本的.NET Core?您能分享一下您是如何构建/发布/部署它的吗?您如何配置服务?您能用Hello MVC Web应用程序重现这个问题吗?如果从应用程序中删除标识堆栈,是否可以重现该问题?初始内存使用是什么样子的?应用程序在崩溃前运行数小时后是否达到某种内存使用的稳定状态?你能在崩溃前抓到一堆应用程序吗?我还没有用Hello World或不使用标识堆栈复制。在排除其他项目之前,我不确定我是否想把时间花在这类事情上。。。我更新了主要帖子,回答了你的大部分问题。我不知道如何抓到垃圾堆,但如果你告诉我我会这么做。请注意,应用程序并没有真正崩溃;它似乎仍在运行,只是在每个新请求中抛出一个OOM异常。我注意到服务状态输出列出了任务,它基本上处于极限状态。这是意料之中的吗?@omajid我已经缩小到了问题的起因(毕竟不是OOM——它已经没有任务了)…并找到了答案。错误的日志记录配置导致内存泄漏。