Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема с настройкой resource governor в MS SQL 2017  [new]
Max_11111
Member

Откуда:
Сообщений: 198
Исходное обсуждение: https://www.sql.ru/forum/1316231/ssis-neponyatnaya-oshibka-svyazi-s-ms-sql-cherez-ole-db-konnektor
По непонятной причине resource governor иногда ломается и обрывает подключения:

2019-08-28 15:19:00.38 spid151 Process ID 153 was killed by hostname SERVERNAME, host process ID 6252.
2019-08-28 15:19:00.38 spid153 Ошибка: 10982, серьезность: 16, состояние: 1.
2019-08-28 15:19:00.38 spid153 Failed to run resource governor classifier user-defined function 'dbo.RGGroup'. Last error 3602, state 135.
See previous errors in SQL Server error log from session ID 153 for details. Classifier elapsed time: 0 ms.
Происходит это с интервалом пару раз в сутки, возможно в периоды высокой нагрузки.
Настройки RG ниже:
Функция:
CREATE FUNCTION [dbo].[RGGroup]()
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @WorkloadGroup AS SYSNAME
SELECT TOP 1
       @WorkloadGroup = 
	  CASE
                            WHEN IS_SRVROLEMEMBER ('rgAdminUsers') = 1
                                THEN 'PoolAdminUsersGroup'
                            WHEN IS_SRVROLEMEMBER ('rgDWHUsers') = 1
                                THEN 'PoolDWHUsersGroup'
                            WHEN IS_SRVROLEMEMBER ('rgDNSUsers') = 1
                                THEN 'PoolDNSUsersGroup'
                            ELSE 'default'
                        END;

RETURN @WorkloadGroup
END

Пулы:
CREATE RESOURCE POOL PoolDNSUsers 
WITH (  
     MIN_CPU_PERCENT = 0,  
     MAX_CPU_PERCENT = 20,  
     CAP_CPU_PERCENT = 20,       
     MIN_MEMORY_PERCENT = 0,  
     MAX_MEMORY_PERCENT = 20  
      );  

CREATE RESOURCE POOL PoolDWHUsers 
WITH (  
     MIN_CPU_PERCENT = 0,  
     MAX_CPU_PERCENT = 90,  
     MIN_MEMORY_PERCENT = 0,  
     MAX_MEMORY_PERCENT = 90  
      );  
	 
CREATE RESOURCE POOL PoolAdminUsers 
WITH (  
     MIN_CPU_PERCENT = 0,  
     MAX_CPU_PERCENT = 100,        
     MIN_MEMORY_PERCENT = 0,  
     MAX_MEMORY_PERCENT = 100  
      );  

USE [master]
GO

/******  ******/
CREATE WORKLOAD GROUP [PoolDNSUsersGroup] WITH(group_max_requests=0, 
		importance=Medium, 
		request_max_cpu_time_sec=0, 
		request_max_memory_grant_percent=25, 
		request_memory_grant_timeout_sec=0, 
		max_dop=0) USING [PoolDNSUsers], EXTERNAL [default]
GO

/******  ******/
CREATE WORKLOAD GROUP [PoolDWHUsersGroup] WITH(group_max_requests=0, 
		importance=Medium, 
		request_max_cpu_time_sec=0, 
		request_max_memory_grant_percent=40, 
		request_memory_grant_timeout_sec=0, 
		max_dop=0) USING [PoolDWHUsers], EXTERNAL [default]
GO
/******  ******/
CREATE WORKLOAD GROUP [PoolAdminUsersGroup] WITH(group_max_requests=0, 
		importance=Medium, 
		request_max_cpu_time_sec=0, 
		request_max_memory_grant_percent=100, 
		request_memory_grant_timeout_sec=0, 
		max_dop=0) USING [PoolAdminUsers], EXTERNAL [default]
GO


Итоговый:
USE [master]
GO

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

ALTER RESOURCE GOVERNOR WITH (MAX_OUTSTANDING_IO_PER_VOLUME = DEFAULT);
GO

ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

Учётка, для которой подключение иногда обрывается, попадает в группу PoolAdminUsersGroup.
Когда отключаю GOVERNOR - всё прекрасно работает.

В чём может быть проблема?

Сообщение было отредактировано: 6 сен 19, 10:58
4 сен 19, 07:18    [21962957]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с настройкой resource governor в MS SQL 2017  [new]
Konst_One
Member

Откуда:
Сообщений: 11492
https://docs.microsoft.com/ru-ru/sql/relational-databases/resource-governor/create-and-test-a-classifier-user-defined-function?view=sql-server-2017

проверьте пулы/группы
ps
и зачем там select top 1 в функции?
4 сен 19, 11:21    [21963118]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с настройкой resource governor в MS SQL 2017  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6961
Max_11111,

не может выполнить dbo.RGGroup и
See previous errors in SQL Server error log from session ID 153 for details.

Смотрите, что в еррорлоге (dafault trace).
4 сен 19, 13:44    [21963394]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с настройкой resource governor в MS SQL 2017  [new]
Max_11111
Member

Откуда:
Сообщений: 198
Konst_One,

проверил, всё в норме
Переписал функцию, top не нужен:
ALTER FUNCTION [dbo].[RGGroup]()
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
	RETURN CASE
        WHEN IS_SRVROLEMEMBER ('rgAdminUsers') = 1	THEN 'PoolAdminUsersGroup'
        WHEN IS_SRVROLEMEMBER ('rgDWHUsers') = 1	THEN 'PoolDWHUsersGroup'
        WHEN IS_SRVROLEMEMBER ('rgDNSUsers') = 1	THEN 'PoolDNSUsersGroup'
        ELSE 'default'
    END

END
5 сен 19, 11:13    [21964333]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с настройкой resource governor в MS SQL 2017  [new]
Max_11111
Member

Откуда:
Сообщений: 198
Владислав Колосов,

В том то и дело, что в Error логе нет никакой информации по этому, либо по любым, произошедшим перед ним (или после него) событиям.
5 сен 19, 11:16    [21964334]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с настройкой resource governor в MS SQL 2017  [new]
Konst_One
Member

Откуда:
Сообщений: 11492
убивает ваш процесс:

2019-08-28 15:19:00.38 spid151 Process ID 153 was killed by hostname SERVERNAME, host process ID 6252.

поэтому дальше идёт ошибка:

2019-08-28 15:19:00.38 spid153 Ошибка: 10982, серьезность: 16, состояние: 1.
2019-08-28 15:19:00.38 spid153 Failed to run resource governor classifier user-defined function 'dbo.RGGroup'. Last error 3602, state 135. See previous errors in SQL Server error log from session ID 153 for details. Classifier elapsed time: 0 ms.

Надо разбираться что за процесс (host process ID 6252) в этот момент на сервере и что он делает, может есть ошибки в системном логе ОС
5 сен 19, 11:23    [21964347]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с настройкой resource governor в MS SQL 2017  [new]
Max_11111
Member

Откуда:
Сообщений: 198
Konst_One,

6252 - это SQL агент. В нём крутится Job по отключению зависших запросов и старых сессий, но в нём указан фильтр на эту учётку. Если бы даже этот Job убивал сессию, то я получал бы не одну ошибку, а десятки, т.к. в этот момент запускается множество мелких параллельных запросов под одной сессией

Кто знает, какое событие логирует выполнение "kill session_id"?
6 сен 19, 03:58    [21965036]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с настройкой resource governor в MS SQL 2017  [new]
Konst_One
Member

Откуда:
Сообщений: 11492
сложно сказать, что там за проблема, но было такое когда-то с 2008 R2 тупил несколько секунд у некоторых при переключении и эти ошибки сыпались (поищите, народ писал про такое поведение).

PS
и может стоит накатить CU16 14.0.3223.3 на сервер

PS PS
а если job временно выключить и посмотреть как будет себя вести?
6 сен 19, 09:26    [21965086]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с настройкой resource governor в MS SQL 2017  [new]
Max_11111
Member

Откуда:
Сообщений: 198
Konst_One,

Обсуждение вроде нашёл: https://www.sql.ru/forum/1021476-a/sql-server-2008-r2-uzhasno-tupit-posle-perezapuska
только на эту проблему даже внимания не обратили :(

CU16 попробую позже, но в описании исправленных ошибок нет ничего похожего.

Job отключил, посмотрю что получится
6 сен 19, 12:11    [21965243]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить