【发布时间】:2014-10-05 15:53:09
【问题描述】:
我有一个正在运行的服务,每分钟可获取 50-100 个查询。这些都不是高成本的查询。该服务已经运行了大约 3-4 个月,没有任何错误。
几天前它突然开始给出“资源池'default'中的系统内存不足,无法运行此查询。”偶尔出现错误。当我调查这个问题时,我看到sqlservr.exe 正在使用 ~1.5 gb 内存和 %25 的 CPU(全部为 1/4CPU)。当我重新启动sqlservr.exe 时,内存从 ~50mb 开始并缓慢增加直到变为 ~1.5gb,然后导致使用它的应用程序崩溃。
经过一番研究,我认为这是由我使用的 sql server 版本引起的。这是特快版,将数字限制在这些范围内。所以我已经将我的 sql server 从 '2008r2 express' 升级到了 '2012 enterprise'。当我启动该服务时,我以为我的问题终于结束了,因为该服务只使用了约 60mb 的内存,但不幸的是,同样的问题在一个小时内开始出现,但这次我在 Windows 任务管理器上看到的已用内存仍然是约 60mb,不超过任何限制。
我在 wcf 服务中使用 EntityFramework 作为 ORM。除此之外,我还有SqlQueryNotification(broker and stuff) 系统用于一些缓存操作。
我是否遗漏了一些关键的配置点?还是 6gbs 的内存和我的 4 个 CPU 真的不够用?但不可能是这样,因为同样的负载是3个月,当时没有任何错误,代码也没有任何变化。
【问题讨论】:
-
您只是从 Express 升级到 Enterprise?免费?我在哪里可以买到这么棒的交易?!
-
显示你的代码,你一定是因为不清理连接而耗尽了服务器上的资源???
-
如果你有公司,微软会提供 bizspark 程序。我建议你检查一下。
-
MaxMemory for SQL Server 设置为什么?这是 32 位还是 64 位?
-
每次连接数据库时,我都在使用
Using语句。所以我确信我不会让任何连接保持打开状态。我的系统是64位的。而 6144mb 是最大服务器内存,我是从服务器属性中设置的。
标签: c# sql sql-server wcf