我在 Windows 2003 R2 SP2 上安装了一个 SQL 2005 SP3 框。这个盒子有 64GB 的内存,启用了 AWE(和 boot.ini 中的 /PAE)以及内存中的锁定页面启用和最大服务器内存设置为 45GB。该服务器还有 32 个 CPU。
我们在日志中看到如下错误:
错误:701,严重性:17,状态:123。系统内存不足,无法运行此查询。
失败的虚拟分配字节:FAIL_VIRTUAL_RESERVE 65536
sql server 进程内存的很大一部分已被调出。这可能会导致性能下降。持续时间:0 秒。工作集 (KB):43160332,已提交 (KB):467644,内存利用率:45%。
对于 Virtual Reserve 错误,我发现这通常是 MemToLeave 默认为 256MB 引起的问题,因此我使用 -g 512 启动 SQL Server 以将其加倍,然后查看 Virtual Reserve 错误是否消失。由于该更改,SQL 服务立即在 24 小时内异常终止。所以我们现在再次使用默认值运行,它记录错误但不异常终止 SQL 服务。
如果我查看环形缓冲区 (sys.dm_os_ring_buffers),我会看到如下消息:
EventTime Type Indicators Avail Phys Mem, Kb Avail VAS, Kb Avail Phys Mem, Mb Avail VAS, Mb Avail Phys Mem, Gb Avail VAS, Gb
2012-06-19 10:37:54.063 …Run Code Online (Sandbox Code Playgroud)