天天看点

SQLServer CPU瓶颈问题的判定和解决

title: sqlserver · case分析 · cpu瓶颈问题的判定和解决

数据库出现无法登陆的告警

活跃连接堆积

SQLServer CPU瓶颈问题的判定和解决

实例cpu持续99%+

SQLServer CPU瓶颈问题的判定和解决

实例总连接数超过规格

SQLServer CPU瓶颈问题的判定和解决

活跃链接堆积是结果,能堆积到500+可想对业务的影响已经非常严重了

连接数超过的原因跟业务上的限制策略有关

实例正常连接已经无法建立,只能利用dac协助诊断

<a href="https://technet.microsoft.com/en-us/library/ms178068.aspx">使用dac</a>

实例等待

SQLServer CPU瓶颈问题的判定和解决
SQLServer CPU瓶颈问题的判定和解决

cpu 开销大的sql

SQLServer CPU瓶颈问题的判定和解决

实例在无法连接前的一个诊断报告也和我们的检查结果一致

实例cpu使用率

SQLServer CPU瓶颈问题的判定和解决

等待信息

SQLServer CPU瓶颈问题的判定和解决

活跃连接都在等cpu调度,spid已经复用到1.6k+

SQLServer CPU瓶颈问题的判定和解决

为了让实例快速恢复,首先要做的是适当放大调整cpu affinity mask,并且让用户应用做适当降级不要再次压垮实例

长期需要优化sql逐步从根本上解决问题,当然也有的时候sql的执行计划已经很好,只是业务的并发和rt达不到用户要求,这就需要考虑升级或做业务调整

这个case通过类似几个sql优化达到了不错的效果

SQLServer CPU瓶颈问题的判定和解决
SQLServer CPU瓶颈问题的判定和解决

执行计划的bookmark可以进一步优化

优化建议

SQLServer CPU瓶颈问题的判定和解决
SQLServer CPU瓶颈问题的判定和解决

优化后的 sql开销

SQLServer CPU瓶颈问题的判定和解决

优化后的sql执行计划

SQLServer CPU瓶颈问题的判定和解决

逻辑读从5k降到6,cpu从31降到0 ms,且从执行计划来看已经最优

实例整体优化后cpu开销变化

SQLServer CPU瓶颈问题的判定和解决

cpu开销明显已经下降