- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个正在运行的服务,每分钟可获得 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 个月,当时没有任何错误,代码也没有任何变化。
最佳答案
SQL Server 将根据需要使用尽可能多的内存,然后慢慢增加,直到它使用服务器属性中分配给它的所有内存:
在服务重新启动之前,它不会释放任何内存;这是设计使然。
通常建议为操作系统留出 2 GB 左右的空间,并且您需要注意在与 SQL 相同的服务器上运行的任何其他处理。通常建议在其自己的服务器上安装 SQL Server,而不要在其中运行任何其他内容。
也就是说,1.5 GB 的 RAM 用于 SQL Server 并不算多。如果您没有更多可用资源,可能是时候添加一些或升级服务器了。
另见: Technet , Brent Ozar
关于c# - 资源池 'default' 中的系统内存不足,无法运行此查询。在 SQL 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25266663/
SQL Server 2008 链接服务器和临时插入导致快速内存泄漏,最终导致服务器无响应并以以下错误结束: Msg 701, Level 17, State 123, Server BRECK-PC
我收到此错误: 资源池“默认”中的系统内存不足,无法运行此查询。 我正在运行 100,000 个简单的插入语句,如下所示。我在第 85,000 次插入时遇到了错误。 这是我正在学习的类(class)的
我已将 commons-pooling-1.6.jar 添加到我的类路径并尝试实例化一个 StackObjectPool 但每次都失败: // Deprecated. ObjectPool oPool
我有一个正在运行的服务,每分钟可获得 50-100 个查询。这些都不是高成本查询。该服务已经运行了大约 3-4 个月,没有出现任何错误。 几天前突然开始出现“资源池‘默认’中的系统内存不足,无法运行此
我只是想右击然后选择“从数据库生成模型”。我得到了错误: Unable to generate the model because of the following exception: 'An er
我是一名优秀的程序员,十分优秀!