MS SQL как исправить проблему с постоянной загрузкой CPU?
От: push  
Дата: 24.09.16 21:11
Оценка: :)
В диспетчере задач видно, что MS SQL сервер постоянно грузит процессор на 30%. Причём памяти потребляет немного — около 150-300 МБ.
Идей чем он занят нет. Перезапуск сервиса помогает минуты на 3-4, далее опять аномальная загрузка процессора.
Помогите определить причину этого и исправить её.

Конфигурация:
Windows Server 2012 R2 Standard x64
Intel Core 2Duo 3.0
4Gb memory
MS SQL 2016 RTM
Re: MS SQL как исправить проблему с постоянной загрузкой CPU?
От: #John Европа https://github.com/ichensky
Дата: 24.09.16 22:23
Оценка: :)
Здравствуйте, push, Вы писали:


P>Помогите определить причину этого и исправить её.

Надо запустить SQL Server Profiler и посмотреть, какие запросы нагружают сервак.
Підтримати Україну у боротьбі з країною-терористом.

https://prytulafoundation.org/
https://u24.gov.ua/

Слава Збройним Силам України!!! Героям слава!!!
Re[2]: MS SQL как исправить проблему с постоянной загрузкой
От: push  
Дата: 25.09.16 10:47
Оценка:
Здравствуйте, #John, Вы писали:

J>Здравствуйте, push, Вы писали:



P>>Помогите определить причину этого и исправить её.

J>Надо запустить SQL Server Profiler и посмотреть, какие запросы нагружают сервак.

Я отключил SQL Agent. Запустил профайлер и вижу, что всё время повторяется один и тот же запрос от .NET SqlClient Data Provider:

exec sp_reset_connection

-- network protocol: LPC
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language русский
set dateformat dmy
set datefirst 1
set transaction isolation level read committed

exec prc_QueryNotifications @lastEventId=1638




Поиск в сети по поводу того, что происходит ничего не дал.
Отредактировано 25.09.2016 10:49 push . Предыдущая версия .
Re[3]: MS SQL как исправить проблему с постоянной загрузкой
От: Olaf Россия  
Дата: 25.09.16 15:05
Оценка:
Здравствуйте, push, Вы писали:

P>Я отключил SQL Agent. Запустил профайлер и вижу, что всё время повторяется один и тот же запрос от .NET SqlClient Data Provider:


P>...


P>Поиск в сети по поводу того, что происходит ничего не дал.


В профайлер можно увидеть БД (DatabaseID, DatabaseName), на которой выполняется запрос. Попробуйте определить БД и посмотреть содержимое ХП prc_QueryNotifications.
Re: MS SQL как исправить проблему с постоянной загрузкой CPU?
От: Sinix  
Дата: 25.09.16 16:55
Оценка:
Здравствуйте, push, Вы писали:

P>Помогите определить причину этого и исправить её.


ssms dashboard + ssms reports
http://blog.sqlauthority.com/2014/09/23/sql-server-ssms-performance-dashboard-reports-home-page-details/
Re[4]: MS SQL как исправить проблему с постоянной загрузкой
От: push  
Дата: 25.09.16 18:25
Оценка:
Здравствуйте, Olaf, Вы писали:

O>В профайлер можно увидеть БД (DatabaseID, DatabaseName), на которой выполняется запрос. Попробуйте определить БД и посмотреть содержимое ХП prc_QueryNotifications.


Так, сделал свой шаблон профилирования и увидел, что постоянно идут запросы на базу Tfs_Configuration. Так, значит проблема в TFS. Ок, теперь осталось понять как пофиксить аномальную загрузку ЦП. Хорошо, TFS на данный момент никто не пользуется — с чего же там такая активность?
Из профилирования видно, что объектами запроса являются QDS base transaction, prc_QueryNotifications, dbo.func_GetEventClassFromSequence, sp_reset_connection, QDS batch.
Нашёл prc_QueryNotifications:

USE [Tfs_Configuration]
GO
/****** Object:  StoredProcedure [dbo].[prc_QueryNotifications]    Script Date: 25.09.2016 21:07:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************************************************************************************************
** Warning: the contents of this stored procedure are critical to its functioning. 
** Modifying the contents of this stored procedure could result in data corruption, performance issues,
** or other bugs in your Team Foundation Server deployment. 
** DO NOT MODIFY IT.
******************************************************************************************************/
-- Hash: 6E9896E717BA0A0A813D8CAFE08F71AF1C1E7D16
ALTER PROCEDURE [dbo].[prc_QueryNotifications]
    @lastEventId        BIGINT,
    @maxEvents          INT = 10000
AS
SET NOCOUNT ON
SET XACT_ABORT ON

SELECT  TOP (@maxEvents)
        EventClass,
        EventId,
        EventData,
        EventAuthor,
        HostId
FROM    tbl_NotificationQueue WITH (READCOMMITTEDLOCK) -- We need to use shared locks so we do not skip over uncommitted notifications
WHERE   EventId > @lastEventId
ORDER BY EventId ASC

-- we currently deliver global events to all hosts in the db, this is ok
-- since we only allow it at the configdb, so there is only 1 host.
SELECT  dbo.func_GetEventClassFromSequence(s.name) AS EventClass,
        CONVERT(BIGINT, s.current_value) AS EventId,
        CONVERT(NVARCHAR(MAX), NULL) AS EventData,
        CONVERT(UNIQUEIDENTIFIER, NULL) AS EventAuthor,
        CONVERT(UNIQUEIDENTIFIER, NULL) AS HostId
FROM    sys.sequences s
WHERE   s.name LIKE  N'Sequence[_]GN[_]%'


Как-то ничего криминального вроде нет.

Куда дальше копать?
Re[2]: MS SQL как исправить проблему с постоянной загрузкой CPU?
От: push  
Дата: 25.09.16 18:59
Оценка:
Здравствуйте, Sinix, Вы писали:

S>ssms dashboard + ssms reports

S>http://blog.sqlauthority.com/2014/09/23/sql-server-ssms-performance-dashboard-reports-home-page-details/

Прочитал, попробовал но больше информации я уже получил из профилирования:
http://rsdn.org/forum/db/6562739.1
Автор: push
Дата: 25.09.16


Теперь осталось понять как пофиксить аномальное использование процессора.
Re: MS SQL как исправить проблему с постоянной загрузкой CPU?
От: akasoft Россия  
Дата: 08.11.16 09:05
Оценка:
Здравствуйте, push, Вы писали:

P>Помогите определить причину этого и исправить её.


Попробуй задать на сервере Максимальную степень параллеризма == 1.

sp_configure 'show advanced',1
reconfigure with override
go
sp_configure 'max degree', 1
go
sp_configure 'show advanced',0
reconfigure with override
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re: MS SQL как исправить проблему с постоянной загрузкой CPU
От: MasterZiv СССР  
Дата: 08.11.16 10:31
Оценка:
Здравствуйте, push, Вы писали:

P>В диспетчере задач видно, что MS SQL сервер постоянно грузит процессор на 30%. Причём памяти потребляет немного — около 150-300 МБ.

P>Идей чем он занят нет.

Ты не поверишь, он обрабатывает данные, выполняет запросы !
И это вообще нормально.

При старте без запросов он может ещё некоторое время выполнять database recovery -- это такой специальный процесс,
который физически восстанавливает структуру данных базы данных.

UPD:

ещё могут выполняться серверные JOB-ы.
Отредактировано 08.11.2016 10:33 MasterZiv . Предыдущая версия .
Re[2]: MS SQL как исправить проблему с постоянной загрузкой CPU
От: Sinix  
Дата: 08.11.16 10:54
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>ещё могут выполняться серверные JOB-ы.


TFS там. Вот очень похожий вопрос, возможно, от топикстартера
http://stackoverflow.com/questions/40287624/tfs-mssql-continuously-loads-30-of-cpu
Re[2]: MS SQL как исправить проблему с постоянной загрузкой CPU?
От: Olaf Россия  
Дата: 15.02.17 16:13
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Попробуй задать на сервере Максимальную степень параллеризма == 1.


Так 1 как раз наоборот, приводит к использованию одного процессора и отключению параллелизма как такового. Для эксплуатации максимального количества процессоров необходимо установить 0 (по умолчанию).
Re[3]: MS SQL как исправить проблему с постоянной загрузкой CPU?
От: akasoft Россия  
Дата: 17.02.17 09:34
Оценка:
Здравствуйте, Olaf, Вы писали:

O>Так 1 как раз наоборот, приводит к использованию одного процессора и отключению параллелизма как такового. Для эксплуатации максимального количества процессоров необходимо установить 0 (по умолчанию).


Неожиданно, правда? Тем не менее, знаю случаи, когда это решило проблему загрузки и отзывчивости ПО.
Полагаю, это оттого, что писатели тормозящих программ либо вообще не отлаживали своё произведение, либо отлаживали его на усечённых SQL Express с ограничением на 1 процессор.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.