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

Откуда: Москва
Сообщений: 203
Добрый день.

Возник вопрос по использованию Reporting Services процессоров на хосте.

По серверу пришёл алерт по очередям к процессорам. При проверке обнаружил, что нагружена только четверть логических процессоров (Node 0). Грузит процесс reportingservicesservice от репортинга.

У сервера отчётов настроить использование оперативной памяти возможно. А вот по процам подобного не вижу, он автоматом может только 1 Node использовать получается?
(В MS SQL у сервера включено использование всех процов и при нагрузке к пользовательским базам равномерно грузит).

К сообщению приложен файл. Размер - 110Kb
30 сен 19, 17:44    [21983045]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services и выделение CPU  [new]
Владислав Колосов
Member

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

а сколько отчетов он рендерил в тот момент?
30 сен 19, 18:12    [21983078]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services и выделение CPU  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 888
а случайно версия лицензирования какова? Возможно ограничения сиквела есть. по самому SQL Server такое возможно и для избежания нужно ставить Core Licence. По репортингу не уверен.
1 окт 19, 17:38    [21984171]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services и выделение CPU  [new]
Danion
Member

Откуда: Москва
Сообщений: 203
По реально запущенным отчётам затрудняюсь ответить. Из активных запросов по базам репортинга было два: с CREATE PROCEDURE [dbo].[WriteLockSession] и с началом (@SnapshotId uniqueidentifier,@IsPermanent bit,@ChunkName nvarchar(36),@ChunkType int,@ChunkId uniqueidentifier output,@ChunkFlags tinyint output,@MimeType nvarchar(260) output). По ним находил информацию, что у кого были проблемы с блокировками, но у меня они отрабатывают без дедлоков и блокировок.

Версия MS SQL 2016 SP2 CU6 Enterprise: Core-based Licensing (64-bit). CU не последний, но с ним раньше таких проблем не было. Плюс как уже писал - это поведение именно reportingservicesservice. Служба самого SQL сервера может использовать все процы.

Планируется обновить до 2017 с последними обновлениями, может поможет, если баг. Как вариант - вынести службу репортинга на отдельный хост. Но заинтересовало само происходящее, что-то в интернете даже похожего не вижу.
1 окт 19, 17:58    [21984207]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services и выделение CPU  [new]
Владислав Колосов
Member

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

рендер, по-моему, в одно ядро работает. Т.е. один отчет нагрузит одно ядро.
1 окт 19, 18:21    [21984227]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services и выделение CPU  [new]
Danion
Member

Откуда: Москва
Сообщений: 203
Если отойти от нагрузки только на часть процов, то вызывает вопрос ещё и причина:
во время такого повышения в выполняемых скриптах в SQL стабильно вижу два, причем "технических"
+
(@SnapshotId uniqueidentifier,@IsPermanent bit,@ChunkName nvarchar(36),@ChunkType int,@ChunkId uniqueidentifier output,@ChunkFlags tinyint output,@MimeType nvarchar(260) output)
if (@IsPermanent = 1) begin		
	select	@ChunkId = ChunkId,
			@ChunkFlags = ChunkFlags,
            @MimeType = MimeType
	from dbo.SegmentedChunk chunk
	where chunk.SnapshotDataId = @SnapshotId and chunk.ChunkName = @ChunkName and chunk.ChunkType = @ChunkType
	
	select	csm.SegmentId, 				
			csm.LogicalByteCount as LogicalSegmentLength, 
			csm.ActualByteCount as ActualSegmentLength		
	from ChunkSegmentMapping csm		
	where csm.ChunkId = @ChunkId
	order by csm.StartByte asc
end
else begin
	select	@ChunkId = ChunkId,
			@ChunkFlags = ChunkFlags,
            @MimeType = MimeType
	from [ReportServerTempDB].dbo.SegmentedChunk chunk
	where chunk.SnapshotDataId = @SnapshotId and chunk.ChunkName = @ChunkName and chunk.ChunkType = @ChunkType
	
	if @ChunkFlags & 0x4 > 0 begin
		-- Shallow copy: read chunk segments from catalog 
		select	csm.SegmentId, 				
				csm.LogicalByteCount as LogicalSegmentLength, 
				csm.ActualByteCount as ActualSegmentLength		
		from ChunkSegmentMapping csm		
		where csm.ChunkId = @ChunkId
		order by csm.StartByte asc
	end
	else begin
		-- Regular copy: read chunk segments from temp db
		select	csm.SegmentId, 				
				csm.LogicalByteCount as LogicalSegmentLength, 
				csm.ActualByteCount as ActualSegmentLength		
		from [ReportServerTempDB].dbo.ChunkSegmentMapping csm		
		where csm.ChunkId = @ChunkId
		order by csm.StartByte asc
	end
end


CREATE PROCEDURE [dbo].[WriteLockSession]
@SessionID as varchar(32),
@Persisted bit,
@CheckLockVersion bit = 0,
@LockVersion int
AS
SET NOCOUNT OFF ;
IF @Persisted = 1
BEGIN
	IF @CheckLockVersion = 0
	BEGIN
		UPDATE [ReportServerTempDB].dbo.SessionLock WITH (ROWLOCK)
		SET SessionID = SessionID
		WHERE SessionID = @SessionID;
	END
	ELSE
	BEGIN
		DECLARE @ActualLockVersion as int

		UPDATE [ReportServerTempDB].dbo.SessionLock WITH (ROWLOCK)
		SET SessionID = SessionID,
		LockVersion = LockVersion + 1
		WHERE SessionID = @SessionID
		AND LockVersion = @LockVersion ;

		IF (@@ROWCOUNT = 0)
		BEGIN
			SELECT @ActualLockVersion = LockVersion
			FROM [ReportServerTempDB].dbo.SessionLock WITH (ROWLOCK)
			WHERE SessionID = @SessionID;

			IF (@ActualLockVersion <> @LockVersion)
				RAISERROR ('Invalid version locked', 16,1)
			END
		END
	END
ELSE
BEGIN
	INSERT INTO [ReportServerTempDB].dbo.SessionLock WITH (ROWLOCK) (SessionID) VALUES (@SessionID)
END




Бывает, что и каждые 4-5 минут выполняются, а коллеги утверждают, что отчёты используются максимум раз в полчаса.
22 окт 19, 09:44    [21999509]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services и выделение CPU  [new]
Владислав Колосов
Member

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

это сервисные джобы работают.
22 окт 19, 12:36    [21999715]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить