这是一个需要大修的客户端环境,所以我要做的就是减缓流血。
情况
CPU 被压垮,利用率通常为 80% 或更高
虚拟机 5.5、Windows Server 2008r2、SQL Server 2012
1 个 6 核 vCPU(此处为红旗)
70GB 内存
16 个独立的实例,一个驱动大部分 CPU 使用的实例有 80 个用户数据库
所有大多数实例 MAXDOP 0,所有并行度的成本阈值为 5
中断现在不是一个选项,所以没有重新启动,没有 vCPU 更改,但我需要减缓高 CPU 的流血。
这是当前等待具有 80 个 DB 的实例的前 10 个示例,CPU 占用:
╔══════════════════════╦══════════════════╦════════════╦═════════════╗
║ wait_type ║ Wait Time (Secs) ║ # of Waits ║ Avg ms/Wait ║
╠══════════════════════╬══════════════════╬════════════╬═════════════╣
║ WRITELOG ║ 9.8 ║ 5563 ║ 1.8 ║
║ PAGELATCH_SH ║ 7 ║ 21742 ║ 0.3 ║
║ SOS_SCHEDULER_YIELD ║ 6.5 ║ 8891 ║ 0.7 ║
║ PAGELATCH_EX ║ 5.3 ║ 20106 ║ 0.3 ║
║ CXPACKET ║ 4.2 ║ 174 ║ 24.2 ║
║ LATCH_EX ║ 2.7 ║ 1287 ║ 2.1 ║
║ LCK_M_S ║ 2.2 ║ 123 ║ 18.1 ║
║ LCK_M_U ║ 1.7 ║ 385 ║ 4.5 ║
║ PAGEIOLATCH_SH ║ 0.9 ║ 972 ║ 0.9 ║
║ ASYNC_IO_COMPLETION ║ 0.5 ║ 3 ║ 150.3 ║
╚══════════════════════╩══════════════════╩════════════╩═════════════╝
我的想法是,将所有实例的 MAXDOP 设置为 3,成本阈值设置为 25。
我马上看到错误的事情
问题
解决这个问题需要中断。可能是其中的一些。
我同意以上所述。我还会检查您的查询是否占用了 CPU,并确定是否可以实施任何查询调整或至少有一些计划指南。但总而言之,您的配置是不可持续的。
只是为了更新,我们最终会将一些负载转移到不同的服务器,然后完全重建环境。
感谢您的时间和答复。