c# - 仅在某些情况下 LINQ 语句的 OutOfMemory 异常
问题描述
我管理一个网站,其博客部分由 ASP.NET MVC 架构和存储在 SQL Server 数据库中的文章组成。如果抛出任何异常,它会向我发送电子邮件。每隔几周,我就会在深夜(通常在 40 到 150 之间)收到一系列电子邮件,其中包含这行代码引发的相同 System.OutOfMemory 异常:
var resultsDb = db.Articles
.Where(x => x.CreatedDate <= DateTime.Now
&& x.ArticleTypeID == TypeID
&& x.IsActive == true)
.OrderByDescending(x => x.CreatedDate)
.ToList();
现在经过一些研究,我了解到一次查询所有文章是不好的做法,并且可能导致此错误(数据库中目前有约 200 篇文章)。但是,我无法解释这种情况有一些奇怪的事情:
- 无论我做什么,我都无法手动重现异常。这很慢,但查询总是在 localhost 中成功完成,包括生产和开发文章数据库。此外,无论我在实时站点上做什么,我都不会收到指示错误的电子邮件。
- 例外的时间安排:总是以相对较大的批次分散在每分钟 1-2 次例外的时间段内。总是在深夜。每两周只偶尔住一晚。
我很好奇是什么导致了这些事件。是安全威胁吗?数据库出了什么问题?
谢谢!
解决方案
推荐阅读
- r - XLConnect 不会在 R 3.5.0 中加载
- amazon-web-services - AWS IOT MQTT 主题在哪里
- verilog - 尝试将零位加载到寄存器中是verilog
- spring-batch - org.springframework.retry.support.RetryTemplate 中的 spring-retry 支持 Spring 5.0.X
- python - xml.etree.ElementTree 与 lxml.etree:不同的内部节点表示?
- json - Save JSON String in Object
- sql-server - MS SQL SERVER 数据透视表聚合函数
- r - 对时间序列图的几个区域进行着色:使用 geom_rect 时出错
- html - 角度项目中的引导程序无法正常工作
- cordova - Cordova 8:如何添加不在 npm 注册表中的插件?