虚拟化 SQL 高 CPU

psh*_*e73 6 sql-server sql-server-2008-r2 configuration vmware

这是一个需要大修的客户端环境,所以我要做的就是减缓流血。

情况

CPU 被压垮了,通常是 80% 或更高的利用率

VMWARE 5.5、Windows Server 2008r2、SQL Server 2012

1 个具有 6 核的 vCPU(此处为红旗)

70GB 内存

16 个独立的实例,驱动大部分 CPU 使用的实例有 80 个用户数据库

所有大多数实例 MAXDOP 0,所有并行成本阈值为 5

中断现在不是一个选项,所以没有重新启动,没有 vCPU 更改,但我需要减缓高 CPU 的出血。

这是前 10 个当前等待具有 80 个 DB 的实例的示例,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       ?
??????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我的想法是,将所有实例的 MAXDOP 设置为 3,成本阈值设置为 25。

mrd*_*nny 9

我马上就看错的东西

  1. 许多实例的方法
  2. 没有足够的 vCPU
  3. vNUMA 可能与 NUMA 不匹配
  4. 我猜有很多缺失的索引
  5. MAXDOP 为 1 或 2
  6. 成本门槛 50
  7. 针对临时工作负载进行优化 = 开启(可能已关闭)

问题

  1. 等待是什么样的?
  2. 什么是所有内存配置设置?

修复此问题将导致中断。大概有几个。