之前有没有遇到过这个?我有一个带有SQL Server 2012 SP1的双节点群集,Windows 2012上安装了Enterprise企业版。这些是在VMWare 5.1上运行的VM。我注意到偶尔CPU会一直飙升到100%并持续一段时间。当我查看使用那么多CPU时,结果是资源监视器。我知道当虚拟内存很低时,SQL Server 2008出现了一个CPU占用率很高的问题(KB 968722),但它已在服务包中修复。
是否有人对SQL Server 2012 SP1有同样的看法?这与KB 968722中提到的情况完全相同,但它不是SQL Server 2008,而是发生在SQL Server 2012上。
答案 0 :(得分:2)
我只是面临类似的问题。我们的Windows团队向我(SQL DBA)报告说,我们只有一个服务器,CPU只有2个核心(服务器有10个核心)。此服务器是2节点群集的一部分,并安装了3个SQL实例。其中一个实例导致CPU问题,导致问题的实例是无效的实例,这是非常令人惊讶的。此实例已安装但尚未使用,并且仅在2个核心上导致CPU问题。使用线程对象性能计数器我确定了稍后用于查询sys.sysprocesses表的线程ID,以查找这些线程ID(KPID)。
SELECT * FROM sysprocesses
WHERE kpid IN (<Thread IDs>)
通过该查询,我在SQL Server上确定了会话ID,它们是后台进程。使用sp_who一个会话ID cmd是:&#34; RESOURCE MONITOR&#34;另一个是:&#34; LAZY WRITER&#34;。
我验证了内存,并且由于此实例是新的,因此配置了最小服务器内存为1024 mb,最大服务器内存为1024 mb。我将最大服务器内存设置增加到2048 mb,问题立即消失。
我知道这不是一个通用的解决方案,由于我的背景,它适用于我的环境,但希望如果其他人也在阅读这个问题,这会有所帮助。
答案 1 :(得分:1)
快速回答(如果&gt; SQL Server 2008):那么RESOURCE MONITOR可能占用大量CPU时间,因为SQL服务器缺少足够的RAM。