资源监视器正在运行 SQL Server 的服务器上输入无产出的条件

适用于: Microsoft SQL Server

症状


在服务器上运行 Microsoft SQL Server 2008年 (或更高版本),资源监视器任务每隔 5 秒钟记录以下消息:
Date_And_Time服务器使用 dbghelp.dll 版本"4.0.5"Date_And_Time服务器 * * 转储线程-spid = 0,PSS = 0x0000000000000000,EC = 0X0000000000000000Date_And_Time为 OPENTEXT\sqlcrmusr 的用户已成功登录登录。连接: 信任。[客户端: ip 地址]Date_And_Time spid78 错误: 4014,严重性: 20 日状态: 2。从网络读取输入的流时发生Date_And_Time spid78 一个致命错误。该会话将被终止。Date_And_Time服务器 *** 堆栈转储发送到驱动器: \MSSQL2005\LOG\SQLDump#.txtDate_And_Time服务器 * ***Date_And_Time服务器 *Date_And_Time服务器 * 开始堆栈转储:Date_And_Time服务器 * Date_And_Time spid 0Date_And_Time服务器 *Date_And_Time服务器 * 非生成资源监视器Date_And_Time服务器 *Date_And_Time服务器 * ***Date_And_Time服务器 *--Date_And_Time服务器 * 短堆栈转储Date_And_Time转储服务器堆栈签名是 0x000000000000005CDate_And_Time、 服务器、 未知、 资源监视器 (0x9b0) 工作人员 0x0000000003A2C1C0 看起来无产出Node_#。释放的内存: 0 KB。约 CPU 使用: 内核 0 msnull 用户 0 msnull 间隔: Interval_value

原因


从 SQL Server 2008年,资源监视器任务定期唤醒来收听和用户低,高,或内存事件的通知。这些内存事件可能会对 SQL Server 外部 (适用于系统范围的通知从操作系统) 或 SQL Server 内部 (进程范围的通知从缓冲池)。发生这样的通知后,各种内存使用者修剪其内存使用量。请注意使用者可以是内存 clerk 的缓存存储、 用户存储或对象存储。如果某些内存使用者使用大量的内存,使用者执行的调整可能需要很长时间才能完成。运行每个 5seconds 的计划程序监视器任务检查是否资源监视器已经从一个使用者到另一个在过去的 60 秒内。当计划程序监视器检测时,资源监视器未移动使用者超过 60 秒时,计划监视器将其解释为进入无产出状态,资源监视器,然后计划监视器记录的错误消息"症状"一节中提到。
注意从 SQL Server 2019年开始,60 秒间隔增加到 120 秒,以便减少这些诊断通知的频率和生成内存转储文件。这些消息也会引发率时,资源监视器会释放内存小于 2 MB 每隔 5 秒钟。这些消息是仅指示资源监视器正忙于清理大客户,并且这些消息并不一定表明资源监视器问题本身。

解决方案


从 Microsoft SQL Server 2008 Service Pack 2 和 Microsoft SQL Server 2008 R2 Service Pack 1,非生成资源监视器消息被扩展为以下内容轻松隔离无产出的条件会导致内存职员。新邮件将如下所示:
资源监视器 (0x9b0) 工作人员 0x0000000003A2C1C0 看起来不可生成节点Node_ #。释放的内存: 0 KB。最后一次等待: lastwaittype。最后一员: 键入clerk_type,命名为clerk_name。约 CPU 使用: 内核 0 毫秒,用户 0 毫秒,间隔: Interval_value
此消息中使用的各个字段的说明如下:
  • 释放内存: 这是多少内存释放资源监视器指定的间隔为单位为千字节。此时释放内存的速度不会超过 2 MB 每隔 5 秒钟,调度程序监视器会作为非产生条件检测这种情况。
  • 最后一次等待: 这是最后一次等待类型资源监视器线程。可以与约 CPU 使用字段一起使用此字段来标识是否资源监视器线程正在运行或等待时间间隔的一个重要组成部分。
  • 最后一个职员: 这是的类型和名称无产出条件发生时已修整其内存内存职员。
  • 约 CPU 使用: 这是由资源监视器以毫秒为单位测量的内核和用户时间。您可以使用此以及其他字段验证资源监视器在指定的时间间隔期间取得的进展。
  • 间隔: 这是最后一个职员被通知以毫秒为单位测量以来的时间。
此消息以替换邮件的时间的 RING_BUFFER_RESOURCE_MONITOR 条目用于标识内存不足通知的源。有关如何解释 RING_BUFFER_RESOURCE 监视器的详细信息。请访问下面的 MSDN 博客:有关如何 SQL Server 侦听并响应对内存通知和有关资源监视器任务和在 SQL Server 中与内存相关的性能问题进行故障排除的详细信息,请参阅以下 MSDN 博客文章:

状态


Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。此问题最早在 SQL Server 2008 Service Pack 2 的 2008.This 问题最早在 SQL Server 2008 R2 Service Pack 1 的 SQL Server 2008 R2 的 SQL Server。