6

有没有人遇到过这个?我有一个带有 SQL Server 2012 SP1 的两节点集群,企业企业安装在 Windows 2012 上。这些是在 VMWare 5.1 上运行的虚拟机。我注意到有时 CPU 会一路飙升至 100% 并持续一段时间。当我查看是什么在使用这么多 CPU 时,结果发现是资源监视器。我知道 SQL Server 2008 在虚拟内存较低时 CPU 使用率较高的问题 (KB 968722),但已在服务包中修复。

有人对 SQL Server 2012 SP1 有同样的看法吗?这与 KB 968722 中提到的情况完全相同,但它发生在 SQL Server 2012 上,而不是 SQL Server 2008。

4

2 回答 2

4

我只是面临一个类似的问题。我们的 Windows 团队向我(SQL DBA)报告说,我们有一台只有 2 个内核(服务器有 10 个内核)的高 CPU 的服务器。此服务器是 2 节点集群的一部分,并安装了 3 个 SQL 实例。其中一个实例导致了 CPU 问题,令人惊讶的是,导致问题的实例是一个什么都不做的实例。此实例已安装但尚未使用,并且仅在 2 个内核上导致 CPU 问题。使用线程对象性能计数器,我确定了稍后我用来查询 sys.sysprocesses 表以查找那些线程 ID (KPID) 的线程 ID。

SELECT * FROM sysprocesses
WHERE kpid IN (<Thread IDs>)

通过该查询,我确定了 SQL Server 上的会话 ID,它们是后台进程。使用 sp_who 一个会话 ID cmd 是:“RESOURCE MONITOR”,另一个是:“LAZY WRITER”。

我验证了内存,由于这个实例是新的,它被配置为最小服务器内存为 1024 mb,最大服务器内存为 1024 mb。我将最大服务器内存设置增加到 2048 mb,问题立即消失了。

我知道这不是一个通用的解决方案,由于我的上下文,它适用于我的环境,但希望如果其他人也在阅读这个问题,它会有所帮助。

于 2016-03-05T17:41:57.603 回答
4

快速回答(如果 > SQL Server 2008):那么 RESOURCE MONITOR 可能会占用大量 CPU 时间,因为 SQL Server 缺少足够的 RAM。

  • 检查您的 Windows 任务管理器/资源监视器是否有不必要的内存密集型进程。清理。
于 2016-03-19T22:35:37.020 回答