| ||||
【文章简介】 2006-06-2314:41:40.72spid77WARNING:FailedtoreservecontiguousmemoryofSize=24641536.2006-06-2314:41:40.85spid77BufferDistribution:Stolen=4800Free=1744Procedures=39391Inram=0Dirty=90621Kept=0I/O=0,Latc
【文章正文】Global Memory Objects: Resource=1617 Locks=313
SQLCache=1836 Replication=204
LockBytes=2 ServerGlobal=42
Xact=63
2006-06-23 14:41:40.85 spid77 Query Memory Manager: Grants=0 Waiting=0 Maximum=94533 Available=94533
2006-06-23 14:41:40.88 spid77 Error: 17803, Severity: 20, State: 12
2006-06-23 14:41:40.88 spid77 Insufficient memory available..
-----------------------------------------------------------------------------------------------------------------------------------------
问题:当我运行 XP_Skills/Index.shtml" target="_blank">Windows Server 2003 SP1 中的 SQL Server 2000 Enterprise Edition SP4 产品时,遇到了奇怪的内存不足异常。图 1 显示我从日志中获得的错误信息。
我的服务器内存很大 (32GB)。奇怪的是,该问题似乎是随机出现的,导致这一错误的存储过程似乎每 20 次执行就出现一到两次这类异常。该服务器的性能计数器表明有大量可用内存。惰性写线程 (lazy writer) 没有足够快地向磁盘写入吗?当执行存储过程时,为什么需要如此大量的内存?是选择语句的数量问题还是因为使用了临时表?解 答:这一问题和机器的物理内存数量毫无关系。根据您的 boot.ini 设置方式,应用程序有 2 到 3 GB 的虚拟地址空间。虚拟地址空间是 32 位系统中的宝贵资源。默认方式下,缓冲池将消耗除了 384MB 的虚拟地址以外的所有空间。384MB 被分出来用于线程堆栈和从以下这样一些组件进行分配(第三方扩展存储过程、链接的服务 器、COM 组件),这类组件要么太大以至缓冲池无法支持,要么不知道如何从缓冲池分配警告表明近 23MB 的分配失败。这种规模的分配成功与否取决于 384MB 块中其他分配的数量和位置。您可能会考虑删除一些加载到系统中的第三方扩展存储过程,确定是否存在通过 sp_oacreate 或链接的电子商务辩论台: |
|
载入中…
|