1

我在生产数据库上使用资源调控器来限制最大 CPU 使用率。但它不能有效地工作。我在不同的服务器上使用相同的结构并且它工​​作正常。服务器之间的唯一区别是 CPU 计数。我的操作系统版本是 Windows Server 2012 R2,我的 MS SQL Server 版本是“Microsoft SQL Server 2014 - 12.0.2495.0 (X64) Mar 31 2015 09:47:37 版权所有 (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64 -bit) 在 Windows NT 6.3 (Build 9600:) (Hypervisor) 上" 我的分类器函数脚本如下:

USE [master]
GO
/****** Object:  UserDefinedFunction [dbo].[rgclassifier_MAX_CPU]    Script Date: 28.7.2015 13:24:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[rgclassifier_MAX_CPU]() RETURNS sysname 
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @workload_group_name AS sysname
      IF (ORIGINAL_DB_NAME() = 'DeFacto' )
          SET @workload_group_name = 'gMAX_CPU_PERCENT_60'
    RETURN @workload_group_name
END;

我的资源池脚本如下:

USE [master]
GO

/****** Object:  ResourcePool [pMAX_CPU_PERCENT_60]    Script Date: 28.7.2015 13:24:21 ******/
CREATE RESOURCE POOL [pMAX_CPU_PERCENT_60] WITH(min_cpu_percent=0, 
        max_cpu_percent=60, 
        min_memory_percent=0, 
        max_memory_percent=100, 
        cap_cpu_percent=100, 
        AFFINITY SCHEDULER = AUTO
, 
        min_iops_per_volume=0, 
        max_iops_per_volume=0)

GO

我的最终描述脚本如下:

USE [master]
GO

ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = [dbo].[rgclassifier_MAX_CPU]);
GO

ALTER RESOURCE GOVERNOR WITH (MAX_OUTSTANDING_IO_PER_VOLUME = DEFAULT);
GO

ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

它不限制最大 CPU 使用率。我将默认 max_cpu_percent 设置为 %60,但有时它使用 %100%。因此,我们无法正常访问系统。这是来自我的事件日志的错误消息:“无法运行资源调控器分类器用户定义的函数‘dbo.rgclassifier_MAX_CPU’。最后一个错误 8525,状态 1。有关详细信息,请参阅 SQL Server 错误日志中的先前错误,来自会话 ID 538。分类器经过时间:0 毫秒。” 你可以帮帮我吗?

4

1 回答 1

0

请注意,最大 CPU 百分比是机会性最大值。如果有可用的 CPU 容量,工作负载将使用它高达 100%。最大值仅适用于 CPU 资源争用情况。

这是完整的描述

于 2017-11-07T09:34:39.290 回答