100% загрузка CPU службой CRMAsyncService на сервере CRM

На днях обнаружил, что на сервере CRM служба CRMAsyncService занимала 100% процессорного времени. Красивой "кардиограммой", так, занимала:

Загрузка процессора службой CRMAsyncService

Решение нашлось быстро - изменить параметры одномоментно загружаемых системных задач в память. Параметры эти называются AsyncItemsInMemoryHigh и AsyncItemsInMemoryLow, и хранятся в метаданных, в таблице [MSCRM_CONFIG].[dbo].[DeploymentProperties]. К слову сказать, найденное решение очень близко описывало мою ситуацию - на тестовом сервере развернул промышленную базу.

[MSCRM_CONFIG].[dbo].[DeploymentProperties]

Простейший запрос помогает нам значительно снизить порог загружаемых в память задач.

UPDATE
	[MSCRM_CONFIG].[dbo].[DeploymentProperties]
SET
	IntColumn = 50
WHERE
	ColumnName = N'AsyncItemsInMemoryHigh'

UPDATE
	[MSCRM_CONFIG].[dbo].[DeploymentProperties]
SET
	IntColumn = 20
WHERE
	ColumnName = N'AsyncItemsInMemoryLow'

И это решение не помогло.

Посидев с профайлером, решил заглянуть в системные задания, и в представлении "Заблокированные системные задания" обнаружил одну запись бизнес-правила в статусе "Ожидание".

Представление Заблокированные системные задания

Т.е. на ровном месте, на одном из шагов этого правила обработка остановилась. Отменил процесс.

Отмена задачи WF

После чего загрузка процессора на сервере спала.

Напоследок упомяну, что для профилактики ошибочно завершённых задач бизнес-правил (workflow) в Microsoft Dynamics CRM можно создать следующее простое представление:

Представление для отслеживания сбойных задач

Регулярное обращение к этому представлению поможет вовремя найти ошибки в ваших бизнес-правилах.

Русский
field_vote: 
0
Голосов пока нет

Добавить комментарий