Вчера мне позвонил клиент, который жаловался на высокую загрузку ЦП на своем SQL Server. Мы используем SQL Server 2012 64 бит SE. Сервер работает под управлением Windows Server 2008 R2 Standard, Intel Xeon 2,20 ГГц (4 ядра), 16 ГБ ОЗУ.
Убедившись , что преступник был на самом деле SQL Server, я решил посмотреть на топ ждет экземпляра с помощью запроса DMV здесь . Два верхних ожидания были: (1) PREEMPTIVE_OS_DELETESECURITYCONTEXT
и (2) SOS_SCHEDULER_YIELD
.
РЕДАКТИРОВАТЬ : Вот результат "запроса на ожидание" (хотя кто-то перезапустил сервер этим утром против моих пожеланий):
Мы делаем много интенсивных расчетов / преобразований, поэтому я могу понять SOS_SCHEDULER_YIELD
. Однако мне очень интересно узнать PREEMPTIVE_OS_DELETESECURITYCONTEXT
тип ожидания и почему он может быть самым высоким.
Лучшее описание / обсуждение, которое я могу найти по этому типу ожидания, можно найти здесь . Это упоминает:
Типы ожидания PREEMPTIVE_OS_ - это вызовы, которые покидают ядро базы данных, как правило, для Win32 API, и выполняют код вне SQL Server для выполнения различных задач. В этом случае он удаляет контекст безопасности, ранее использовавшийся для удаленного доступа к ресурсам. Связанный API фактически называется DeleteSecurityContext ()
Насколько мне известно, у нас нет внешних ресурсов, таких как связанные серверы или файловые таблицы. И мы не делаем олицетворения и т. Д. Может ли резервное копирование вызвать скачок или, возможно, неисправен контроллер домена?
Что, черт возьми, может заставить это быть доминирующим типом ожидания? Как я могу отслеживать этот тип ожидания дальше?
Изменить 2: я проверил содержимое журнала безопасности Windows. Я вижу несколько записей, которые могут представлять интерес, но я не уверен, что это нормально:
Special privileges assigned to new logon.
Subject:
Security ID: NT SERVICE\MSSQLServerOLAPService
Account Name: MSSQLServerOLAPService
Account Domain: NT Service
Logon ID: 0x3143c
Privileges: SeImpersonatePrivilege
Special privileges assigned to new logon.
Subject:
Security ID: NT SERVICE\MSSQLSERVER
Account Name: MSSQLSERVER
Account Domain: NT Service
Logon ID: 0x2f872
Privileges: SeAssignPrimaryTokenPrivilege
SeImpersonatePrivilege
Редактировать 3 : @Jon Seigel, как вы и просили, вот результаты вашего запроса. Немного отличается от Пола:
Изменить 4: Я признаю, я впервые расширенный пользователь событий. Я добавил этот тип ожидания к событию wait_info_external и увидел сотни записей. Здесь нет текста или дескриптора плана, только стек вызовов. Как я могу дополнительно отследить источник?