use*_*829 6 sql-server sql-server-2008-r2
我有一台运行 SQL Server 2008 R2 (10.50.1617.0) 企业版的 32 位 Windows 2003 企业版 SP2 服务器。该服务器是我们 SharePoint 2007 环境的专用 SQL Server 框。
服务器有 36 GB 的内存,我在 SQL Server 中启用了 AWE。
我在 Windows 事件日志中不断收到错误消息:“资源池‘默认’中的系统内存不足,无法运行此查询”。
我正在运行 perfmon 并监视“目标服务器内存”和“服务器总内存”的 SQL Server 内存管理器计数器以及“可用千字节数”的内存计数器。目前,“服务器总内存”计数器为 5 GB。
我已在 SQL Server 中将“最小服务器内存”配置为 25 GB,将“最大服务器内存”配置为 30 GB。服务器显示 31 GB 的可用内存,但我继续不断收到此错误。
索引创建内存设置为 0 KB(动态内存),每个查询的最小内存设置为 1024 KB。
我已经尝试了每个查询的最小内存值,但它并没有阻止错误的发生。
如果我的服务器有 31 GB 的可用内存(其中 20 GB 可用于 SQL Server),为什么我会收到此错误?
我花了几个小时在表单中搜索,但其他收到此错误的人似乎虚拟内存不足,而我的情况并非如此。
有没有人有任何想法可能导致此错误?
我曾尝试重新启动 SQL Server,甚至重新启动服务器本身,但此错误总是在一两分钟内返回。
我计划在获得批准后立即更新到 Service Pack 1,但我怀疑这是否能解决我的问题。
任何建议将不胜感激。
你说你在SQL Server上启用了AWE,但你是否在boot.ini文件中激活了/PAE?
PAE 支持大内存。
在 Windows 32 位企业版中激活 PAE
c:\boot.ini
[boot loader]
timeout=30
default=multi(0)disk(2)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /PAE
Run Code Online (Sandbox Code Playgroud)
http://support.microsoft.com/kb/283037
锁定内存中的页面
作为启用 AWE 的一部分,您还需要授予 SQL Server 服务用户锁定内存页面的权限。在“组策略”对话框 (gpedit.msc) 中启用此选项可防止 Windows 将内存调出 SQL Server 工作集以满足其自身的需要,特别是当 Windows 上的内存开始不足时。
http://msdn.microsoft.com/en-us/library/ms190730.aspx
监控 AWE 内存使用情况
为了测试 AWE 的使用情况,我设置了 Windows 2003 Enterprise SP2,并在 boot.ini 中启用了 PAE。我使用的是 SQL Server 2005 32 位标准 SP4。
总物理内存为8192Mb。SQL Server 的最大内存设置配置为8192,最小内存设置为2048。
SQL Server 在启动时是否看到 AWE。
2012-02-09 07:27:51.35 服务器地址窗口扩展已启用。这只是一条信息性消息;无需用户操作。
SQL Server 是否使用锁定页作为缓冲池
根据一些博客,我应该看到此消息,但我没有。
使用缓冲池的锁定页。这只是一条信息性消息;无需用户操作。
通过 AWE 分配内存
SELECT SUM(awe_allocated_kb) / 1024 AS awe_allocated_mb
FROM sys.dm_os_memory_clerks ;
Run Code Online (Sandbox Code Playgroud)
[3648]
分配给多页内存的内存。
select sum(multi_pages_kb)/1024 as [MultiPage Memory, MB] from sys.dm_os_memory_clerks
Run Code Online (Sandbox Code Playgroud)
[14]
多页内存不能使用AWE分配的内存
内存在缓冲池之外使用
SELECT sum(multi_pages_kb
+ virtual_memory_committed_kb + shared_memory_committed_kb) AS
[Memory used outside BPool, mb]
FROM sys.dm_os_memory_clerks
WHERE type <> 'MEMORYCLERK_SQLBUFFERPOOL'
Run Code Online (Sandbox Code Playgroud)
[24]
按组件划分的总体内存分配
SELECT type, (single_pages_kb)/1024 as Single_Pages_MB, (multi_pages_kb)/1024
AS Multi_Pages_MB, (awe_allocated_kb)/1024 as AWE_allocated_MB
FROM sys.dm_os_memory_clerks
GROUP BY type
ORDER BY 2 DESC
Run Code Online (Sandbox Code Playgroud)
这将向您展示每个组件如何使用单页和多页内存。它还会告诉您哪一个能够从 AWE 中受益。
多页:当请求超过8Kb时
单页:当请求小于或等于8Kb时
附带说明一下,我发现 sp_whoisactive 对于查找缓慢查询、内存占用以及 SQL Server 中发生的几乎所有问题非常有帮助。以下是 Brent Ozar 提供的有关如何设置和使用它的链接。
http://www.brentozar.com/archive/tag/sp_whoisactive/
| 归档时间: |
|
| 查看次数: |
24995 次 |
| 最近记录: |