gpt4 book ai didi

c# - 资源池 'default' 中的系统内存不足,无法运行此查询。在 SQL 上

转载 作者:IT王子 更新时间:2023-10-29 04:24:59 30 4
gpt4 key购买 nike

我有一个正在运行的服务,每分钟可获得 50-100 个查询。这些都不是高成本查询。该服务已经运行了大约 3-4 个月,没有出现任何错误。

几天前突然开始出现“资源池‘默认’中的系统内存不足,无法运行此查询。”偶尔会出现错误。当我调查问题时,我发现 sqlservr.exe 使用了 ~1.5 gb ram 和 %25 的 CPU(所有 1/4CPU)。当我重新启动 sqlservr.exe 时,ram 从 ~50mb 开始慢慢增加直到它变成 ~1.5gb 然后导致使用它的应用程序崩溃。

在我做了一些研究之后,我认为这是由我使用的 sql server 版本引起的。它是 express 版,将数量限制在这些范围内。所以我已经将我的 sql server 从 '2008r2 express' 升级到 '2012 enterprise'。当我启动该服务时,我认为我的问题终于结束了,因为该服务仅使用 ~60mb 内存,但不幸的是,一个小时后,同样的问题开始出现,但这次我在 Windows 任务管理器上看到的已用内存仍然是 ~60mb,不超过任何限制。

我在 wcf 服务中使用 EntityFramework 作为 ORM。除了它之外,我还有用于某些缓存操作的 SqlQueryNotification(代理和其他东西)系统。

我是否遗漏了一些关键的配置点?或者 6gbs 的内存和我的 4 个 CPU 真的不够用吗?但这不可能,因为同样的负载是这样的 3 个月,当时没有任何错误,代码也没有任何变化。

ram allocated

ram usage

最佳答案

SQL Server 将根据需要使用尽可能多的内存,然后慢慢增加,直到它使用服务器属性中分配给它的所有内存:

enter image description here

在服务重新启动之前,它不会释放任何内存;这是设计使然。

通常建议为操作系统留出 2 GB 左右的空间,并且您需要注意在与 SQL 相同的服务器上运行的任何其他处理。通常建议在其自己的服务器上安装 SQL Server,而不要在其中运行任何其他内容。

也就是说,1.5 GB 的 RAM 用于 SQL Server 并不算多。如果您没有更多可用资源,可能是时候添加一些或升级服务器了。

另见: Technet , Brent Ozar

关于c# - 资源池 'default' 中的系统内存不足,无法运行此查询。在 SQL 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25266663/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com