这是一个需要大修的客户端环境,所以我要做的就是减缓流血。
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 …
Run Code Online (Sandbox Code Playgroud) 当 SQLServer Server 2008r2
开始处理查询时,我知道它需要解析 SQL 文本并创建计划,以及其他一些步骤。
它是在缓冲池之外的内存中完成所有这些工作的,对吗?
在实际执行查询以检索/操作数据之前,缓冲池不会发挥作用,对吗?
设想:服务器不是我配置的)
SQL Server 2008r2 SP1 - 是的,它需要打补丁,这是在雷达上 96 GB 的 RAM 最大内存设置为 92 GB 缓冲池,位于 80 GB 以下 使用 PLE 超过 4 小时 查看 resource_semaphore WAITS
如果我理解用于处理查询的内存授予不是来自缓冲池,而是来自剩余的可用内存,那么减少 MAX Memory 应该有助于重新调整 WAIT 类型。我的想法是将 MAX Memory 设置为 72 GB。你的意见?
谢谢!
performance sql-server memory sql-server-2008-r2 query-performance
我以前从未见过这种情况,尽管这可能很常见。我正在查看虚拟化 (VMWare 5.5) SQL Server(Windows 2008 R2 上的 2008R2)。我看到的是,在任务管理器 * 中,sqlserver.exe
使用了大约 163 MB 的 RAM,如果我使用procexp,则相同的服务显示使用的 RAM 不到 500 MB。
VM 有 32GB 的 RAM,任务管理器显示正在使用该 RAM 的 31.7GB。VMWare Perfmon 计数器似乎没有指示任何膨胀(也许我读错了一些东西)。
想法/指导表示赞赏。我正在尝试调整新 SQL VM 的大小。此时,我还没有获得对 vSphere 或 vCenter 数据库的访问权限。
* 使用任务管理器是因为我正在查看整体内存利用率,而不仅仅是 SQL Server。一位性能敏感的管理员警告我要让我的脚步保持非常轻松。