【发布时间】:2011-08-26 14:00:54
【问题描述】:
在 32 位 SQL 2005 Enterprise 机器上,我不断收到“AppDomain XX (DB_NAME.dbo[runtime].YY) 由于内存压力而被标记为卸载”。
- 我有 8GB 物理内存
- AWE 设置为使用 4.5GB
- 没有-g512启动参数集
- 此 SQL 实例正在侦听 3 个不同的端口
我注意到的其他事情包括:
- 几乎没有分页
- CPU 徘徊在 20-30% 左右,符合规范
- MEMORYCLERK_SQLCONNECTIONPOOL 在 10616 左右
- 我得到“AppDomain XX (DB_NAME.dbo[runtime].YY) created”,“AppDomain XX (DB_NAME.dbo[runtime].YY) 由于内存压力而被标记为卸载。”AppDomain XX (DB_NAME.dbo [runtime].YY) 已卸载。”全部在同一分钟内完成,并且每 5 分钟左右重复一次。
上面的数据库只有一个程序集,并且已经运行了好几个月。 这个问题最近才开始出现,我能想到的唯一变化是应用服务器将其池中的连接数从 200-300 增加到大约 1000。
谁能帮我解释一下这个问题?
【问题讨论】:
-
您可以尝试在 Process Explorer 中查看一些与内存相关的统计信息:除了全局提交和物理内存图之外,查看 per-进程缺页计数,尤其是缺页增量(因为这表明进程造成了多少内存压力)。
-
您是否指向外部压力而不是 SQL 本身?如果有外部压力,我不应该看到某种形式的分页吗?
-
嗯,我想是的......我从来没有真正听说过不涉及分页的内存压力。你从哪里得到你的号码? (SQL Server 自己做“分页”吗?)
-
我正在查看操作系统的物理内存。事实上,在任务管理器中,物理可用内存约为 2.5GB。
-
AWE 仅用于缓冲池,不适用于 .NET。它是一个运行嵌入式的普通 32 位进程,因此它本身只能使用 2gig 并记住这是 ADDRESS 空间,而不是实际内存使用。你真的应该使用 64 位操作系统和 64 位 SQL 服务器,系统中有超过 2gig 的内存。
标签: sql sql-server sql-server-2008 sql-server-2005