Монитор ресурсов вступает в условие , не возвращающееся, на сервере, на котором выполняется SQL Server

В этой статье содержатся дополнительные сведения о мониторе ресурсов, который не предоставляется.

Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 2216485

Симптомы

На сервере под управлением Microsoft SQL Server 2008 или более поздней версии задача "Монитор ресурсов" регистрирует следующее сообщение каждые 5 секунд:

Date_And_Time Server Using 'dbghelp.dll' version '4.0.5'
Date_And_TimeServer **Dump thread - spid = 0, PSS = 0x0000000000000
000, EC = 0x0000000000000000
Date_And_TimeLogon Login succeeded for user 'OPENTEXT\sqlcrmusr'. Connection: trusted. [CLIENT:
IP_Address]
Date_And_Timespid78 Error: 4014, Severity: 20, State: 2.
Date_And_Timespid78 A fatal error occurred while reading the input stream from the network. The session will be terminated.
Date_And_TimeServer ***Stack Dump being sent to Drive:\MSSQL2005\LOG\SQLDump####.txt
Date_And_TimeServer * *******************************************************************************
Date_And_TimeServer *
Date_And_TimeServer * BEGIN STACK DUMP:
Date_And_TimeServer *
Date_And_Timespid 0
Date_And_TimeServer *
Date_And_TimeServer * Non-yielding Resource Monitor
Date_And_TimeServer *
Date_And_TimeServer * *******************************************************************************
Date_And_TimeServer * -------------------------------------------------------------------------------
Date_And_TimeServer * Short Stack Dump
Date_And_TimeServer Stack Signature for the dump is 0x000000000000005C
Date_And_Time,Server,Unknown,Resource Monitor (0x9b0) Worker 0x0000000003A2C1C0 appears to be non-yielding on
Node_#. Memory freed: 0 KB. Approx CPU Used: kernel 0 msnull user 0 msnull Interval:
Interval_value.

Причина

Задача "Монитор ресурсов" периодически просыпается для прослушивания событий памяти, классифицированных как низкий, высокий или устойчивый. Монитор уведомляет подписчиков событий о возникновении этих событий.

Эти события памяти могут быть внешними для SQL Server. Внешние события включают уведомления из операционной системы и являются общесистемными. Другие события являются внутренними для SQL Server. Внутренние события включают уведомления из буферного пула и являются общепроцессными. При получении таких уведомлений различные потребители памяти сокращают использование памяти.

Примечание.

Потребителями могут быть клерки памяти, которые являются хранилищами кэша, пользовательскими хранилищами или хранилищами объектов.

Если некоторые потребители памяти используют большой объем памяти, подготовка к обрезке, выполняемой потребителями, может занять много времени.

Задача Монитор планировщика выполняется каждые 5 секунд. Монитор расписания проверяет, перемещался ли монитор ресурсов от одного потребителя к другому за последние 60 секунд. Когда монитор планировщика обнаруживает, что монитор ресурсов не перемещался мимо потребителя в течение 60 секунд, монитор расписания интерпретирует этот сценарий как монитор ресурсов, который переходит в состояние, не являющееся результатом. Эта интерпретация заставляет монитор расписания регистрировать сообщение об ошибке, указанное в разделе "Симптомы".

Примечание.

Начиная с SQL Server 2019 г., 60-секундный интервал увеличивается до 120 секунд. Это увеличение уменьшает частоту таких диагностических уведомлений. Кроме того, уменьшается создание файлов дампа памяти.

Эти сообщения также возникают, если скорость, с которой монитор ресурсов освобождает память, составляет менее 2 МБ каждые 5 секунд.

Эти сообщения указывают только на то, что монитор ресурсов занят очисткой крупных потребителей. Эти сообщения не обязательно указывают на проблему с самим монитором ресурсов.

Разрешение

Начиная со следующих пакетов обновления сообщение монитора ресурсов не предоставляется, чтобы легко изолировать клерок памяти, что приводит к невыдающейся ситуации:

  • Пакет обновления 2 (SP2) Microsoft SQL Server 2008
  • Пакет обновления 1 microsoft SQL Server 2008 R2

Новое сообщение будет выглядеть так:

Resource Monitor (0x9b0) Worker 0x0000000003A2C1C0 appears to be non-yielding on Node Node_#. Memory freed: 0 KB. Last wait: > lastwaittype. Last clerk: type clerk_type, name clerk_name. Approx CPU Used: kernel 0 ms, user 0 ms, Interval: Interval_value.

Ниже приведены описания различных полей, используемых в этом сообщении:

  • Освобожденная память: Это поле указывает, сколько памяти освобождается монитором ресурсов за указанный интервал. Он измеряется в килобайтах. Если скорость, с которой освобождается память, не превышает 2 МБ каждые 5 секунд, монитор планировщика обнаруживает это условие как невыдающееся условие.

  • Последнее ожидание: Это поле является последним типом ожидания для потока монитора ресурсов. Это поле можно использовать в сочетании с полем Approx CPU Used . Это сочетание полей позволяет определить, выполняется ли поток монитора ресурсов или ожидает значительную часть интервала.

  • Последний клерк: Это поле является типом и именем клерка памяти, который обрезал память при возникновении условия, не возвращающего.

  • Приблизительное использование ЦП: Это поле — это время ядра и пользователя, используемое монитором ресурсов, измеряемое в миллисекундах. Это поле можно использовать вместе с другими полями, чтобы убедиться, что монитор ресурсов выполняется в течение указанного интервала.

  • Интервал: Это поле — время, прошедшее с момента уведомления последнего клерка в миллисекундах.

Это сообщение можно использовать для определения источника уведомления о нехватке памяти. Вы также можете использовать RING_BUFFER_RESOURCE_MONITOR записи с момента сообщения.

Ресурсы

Дополнительные сведения о том, как интерпретировать RING_BUFFER_RESOURCE MONITOR, см. в следующей записи блога techcommunity:

Задача "Монитор ресурсов" может устранять проблемы с производительностью, связанные с памятью, в SQL Server. SQL Server прослушивает уведомления о памяти и реагирует на них. Дополнительные сведения об этих элементах см. в следующих статьях блога MSDN: