【问题标题】:SQL Server Express 2008 R2 Memory IssuesSQL Server Express 2008 R2 内存问题
【发布时间】:2011-12-14 12:32:44
【问题描述】:

我有一个在 Windows 2008 R2 服务器上运行的网站,使用 SQL Server Express 2008 R2 数据库,过去几天我遇到了一些非常严重的内存问题。

这是服务器统计数据:

  • 这是一个 Rackspace 云服务器
  • Windows Server 2008 R2 Enterprise SP1 x64
  • 四核 AMD 皓龙 2.34GHz
  • 2GB 内存
  • SQL Server 2008 R2 Express Edition with Advanced Services x64
  • 正在使用全文索引

该网站几个月来一直运行良好,但突然间我看到与 SQL Server 内存不足有关的错误。以下是我见过的最常见的例外情况:

警告:致命错误 9001 发生在 2011 年 10 月 22 日凌晨 5:02。记下错误和时间,并联系您的系统管理员。


“内部”资源池中的系统内存不足,无法运行此查询。


已成功与服务器建立连接,但在登录过程中出现错误。 (提供者:共享内存提供者,错误:0 - 管道的另一端没有进程。)


错误:4060,严重性:11,状态:1。(参数:)。错误以简洁模式打印,因为在格式化过程中出现错误。跟踪、ETW、通知等被跳过。错误:18456,严重性:14,状态:1。(参数:)。错误以简洁模式打印,因为在格式化过程中出现错误。跟踪、ETW、通知等被跳过。


错误:3980,严重性:16,状态:1。(参数:)。错误以简洁模式打印,因为在格式化过程中出现错误。跟踪、ETW、通知等被跳过。

该网站似乎仍然大部分响应。似乎受影响最大的页面是写入数据库的页面。

我已尝试重启 sqlexpress 服务以及重启服务器。两种解决方案都可以解决症状,但问题会在大约 10 到 15 小时内再次出现。

当这些错误发生时,任务管理器会报告正在使用大约 1.8GB 的​​内存。重新启动服务后,使用的内存回落到大约 600MB,并且非常缓慢地爬升备份,直到异常再次开始出现。

我们将不胜感激所有帮助...谢谢!

【问题讨论】:

  • 请通过 marco.marsala AT live.it 与我联系,看看我们的解决方案是否适用于您的情况,以彻底解决这个烦人问题的根本原因

标签: sql-server sql-server-2008 memory sql-server-express out-of-memory


【解决方案1】:

ERRORLOG 将包含有关内存分配模式的一些重要信息,当事情开始降级时。这些行看起来类似于:

  MEMORYCLERK_SQLGENERAL (node 1)                                  KB 
   ---------------------------------------------------------------- --------------------
   VM Reserved                                                      0
   VM Committed                                                     0
   AWE Allocated                                                    0
   SM Reserved                                                      0
   SM Commited                                                      0
   SinglePage Allocator                                             136
   MultiPage Allocator                                              0

   (7 row(s) affected)

在您的 ERRORLOG 文件中搜索此类事件,请遵循 How to use the DBCC MEMORYSTATUS command to monitor memory usage on SQL Server 2005 的指导,因为 DBCC MEMORYSTATUS 的输出与 OOM 状态导致的 ERRORLOG 中的输出非常相似。

【讨论】:

  • 我找到了其中一个,但我仍然不确定我在寻找什么。我阅读了您给我的 MEMORYSTATUS 链接,但我仍然不确定我在寻找什么。如果您想查看,我已在此处上传了 ERRORLOG 的摘录:db.tt/Jv3y643t 如果您看到任何危险信号,请告诉我。谢谢!
  • MEMORYCLERK_FULLTEXT 消耗 963840 Kb。 sys.dm_fts_memory_buffers msdn.microsoft.com/en-us/library/ms180044.aspx 的状态是什么?根据msdn.microsoft.com/en-us/library/ms142560.aspx,您的 2Gb 非常不足。
  • 谢谢!我几乎已经在计划增加该服务器上的 RAM 量。我只是不确定这会解决这个问题,或者它是否会导致内存用完需要更长的时间。至于sys.dm_fts_memory_buffers,我只是对它运行了一个选择查询,并得出了零行。当错误开始出现时,我会尝试再次运行它。
  • 您应该在系统内存不足时运行查询。但它仍可能返回 0,表示没有 FT 索引构建操作正在进行。
  • 我一直在关注系统,但是内存不足的问题当然不再出现了。无论如何,我仍然会增加系统中的内存。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多