我有一台运行SQL Server实例的物理服务器。
我注意到该服务器通常以100%的CPU使用率运行。
我的IT团队对此并不满意,建议我们为操作系统保留32个内核中的2个。
效果很好,现在最大使用量峰值接近90%。此外,不再报告从各个用户进行缓慢的数据检索。
是否有任何理由不以这种方式使用WSRM(Windows系统资源管理器),而不是使用SQL资源调控器?
我有一台运行SQL Server实例的物理服务器。
我注意到该服务器通常以100%的CPU使用率运行。
我的IT团队对此并不满意,建议我们为操作系统保留32个内核中的2个。
效果很好,现在最大使用量峰值接近90%。此外,不再报告从各个用户进行缓慢的数据检索。
是否有任何理由不以这种方式使用WSRM(Windows系统资源管理器),而不是使用SQL资源调控器?
Answers:
有没有理由不使用您定义的方法?绝对。
想象一下,您买了一辆汽车,当您达到50MPH时,发动机开始过热。您对这种情况的反应是人为地将汽车限制为49MPH,还是找出发动机故障是什么?
为什么要将车速限制为49MPH?制造商表示,它的驱动速度可高达80MPH-您想快速驱动汽车,以使其达到这一速度-如果不是因为该死的过热问题。
您购买的汽车也确实非常昂贵。每个发动机气缸都需要最大程度地利用,因此您不会浪费金钱!
通过人为限制SQL Server对CPU的访问,您会失去性能。您可能已经通过确保OS可用的CPU暂时解决了性能问题,但是您还没有回答真正的问题- 为什么SQL Server使用100%的CPU?
我的建议如下:
找出真正的问题所在,然后解决。不要用有效的纠缠来掩盖问题。当服务器的工作负载自然地随着增长而增加时,该问题将再次出现并打扰您。
作为临时解决方案,除非您找到真正的问题,否则可以使用资源调控器来降低使用的CPU 。
Erik Darling在对您的问题的评论中提到了不使用WSRM的最大实际原因:
...在其他进程中对CPU的使用没有相互限制。SQL Server可能不会使用这两个核心,但是其他东西可能会使用其他30个SQL Server正在使用的核心。真的,这是胡扯。
如果这对您有用,那就坚持下去-我们都很忙,您只能在任何给定的问题上花很多时间。在理想的解决方案是修复推动的CPU的用户应注意的问题(在他的乔治盖点的基础查询/问题的出色答卷)。
埃里克继续说
此外,您还需要为其支付SQL Server许可费用。
从业务角度来看,这可能是WSRM交易中最糟糕的部分-您要为每个明显不被使用的2个内核支付每内核许可。在撰写本文时,这还剩下$ 3k或$ 14k(取决于Standard vs Enterprise)。