Twi*_*les 6 sql-server sql-server-2008-r2 resource-governor
我们有一个 SQL Server 2008R2 标准版,其中包含多个数据库,这些数据库属于 16 核服务器上的不同应用程序。
最近推出的一个应用程序会定期执行昂贵的查询,导致 CPU 使用率达到 100%。当然,其他应用程序正在报告性能问题。
资源调控器似乎是控制流氓应用程序的合适工具,不幸的是它仅在企业版中可用。
由于其他应用程序相当简单,我试图通过降低实例的“最大并行度”来控制问题,以便单个查询无法降低所有内容。虽然这成功地将 CPU 负载保持在 50%,但出人意料地没有阻止其他应用程序陷入困境。
现在我们已决定将新应用程序的数据库移动到一个专用实例,但此实例的最佳配置是什么?我应该保留 MAXDOP 设置,使用 CPU 亲和掩码还是有其他选项来限制我不知道的 CPU 使用率?
您可以使用 Windows 系统资源管理器 (WSRM),这是 Windows Server 中的一项功能(不确定最低版本,但肯定是 2008 R2+)。
这将允许您控制进程使用的 CPU 数量,因此如果您还没有将流氓应用程序分离到它自己的 SQL Server 实例,那么无论如何您都会这样做。
那时您可以设置任何MAXDOP您想要的,因为该过程永远不会超过您在 WSRM 中设置的最大限制。
设置 CPU 关联掩码是一个选项。您希望将应用程序完全隔离到它自己的一组核心上以消除争用(注意:注意您的 NUMA 节点)。如果您有这些额外的内核可用,那么就去做吧,但我更喜欢 WSRM 解决方案,因为当该应用程序空闲时,所有CPU 都可以由其他应用程序使用。
| 归档时间: |
|
| 查看次数: |
16853 次 |
| 最近记录: |