Контент, предоставляемый Microsoft, сильно загружает ЦП

Обновлено: 02.07.2024

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

Рекомендации по процессору

Выберите 64-разрядные процессоры для серверов. 64-разрядные процессоры имеют значительно больше адресного пространства и необходимы для Windows Server 2022. 32-разрядные выпуски операционной системы предоставляться не будут, но 32-разрядные приложения будут работать в 64-разрядной операционной системе Windows Server 2022.< /p>

Чтобы увеличить вычислительные ресурсы сервера, вы можете использовать процессор с более высокочастотными ядрами или увеличить количество ядер процессора. Если ЦП является ограничивающим ресурсом в системе, ядро ​​с частотой 2x обычно обеспечивает больший прирост производительности, чем два ядра с частотой 1x.

Не ожидается, что несколько ядер обеспечат идеальное линейное масштабирование, а коэффициент масштабирования может быть еще меньше, если включена технология Hyper-Threading, поскольку технология Hyper-Threading основана на совместном использовании ресурсов одного физического ядра.

Сопоставьте и масштабируйте подсистему памяти и ввода-вывода с производительностью ЦП и наоборот.

Не сравнивайте частоты ЦП разных производителей и поколений процессоров, так как сравнение может дать неверное представление о скорости.

Для Hyper-V убедитесь, что процессор поддерживает SLAT (преобразование адресов второго уровня). Он реализован как расширенные таблицы страниц (EPT) Intel и вложенные таблицы страниц (NPT) AMD. Вы можете проверить наличие этой функции с помощью SystemInfo.exe на вашем сервере.

Рекомендации по кэшированию

Выберите большой кэш процессора L2 или L3. В более новых архитектурах, таких как Haswell или Skylake, имеется унифицированный кэш последнего уровня (LLC) или L4. Кэши большего размера обычно обеспечивают более высокую производительность, и они часто играют большую роль, чем чистая частота процессора.

Рекомендации по использованию памяти (RAM) и хранилища подкачки

Некоторые системы могут демонстрировать снижение производительности хранилища при запуске новой установки Windows Server 2022 по сравнению с Windows Server 2012 R2. При разработке Windows Server 2022 был внесен ряд изменений для повышения безопасности и надежности платформы. Некоторые из этих изменений, например включение Защитника Windows по умолчанию, приводят к увеличению длины путей ввода-вывода, что может снизить производительность ввода-вывода в определенных рабочих нагрузках и шаблонах. Microsoft не рекомендует отключать Защитник Windows, так как он является важным уровнем защиты ваших систем.

Увеличьте объем ОЗУ в соответствии с вашими потребностями в памяти. Когда вашему компьютеру не хватает памяти и ему срочно требуется больше, Windows использует пространство на жестком диске для пополнения системной оперативной памяти с помощью процедуры, называемой пейджингом. Слишком много пейджинга ухудшает общую производительность системы. Вы можете оптимизировать разбиение на страницы, используя следующие рекомендации по размещению файла подкачки:

Изолируйте файл подкачки на отдельном устройстве хранения или, по крайней мере, убедитесь, что он не использует те же устройства хранения, что и другие часто используемые файлы. Например, разместите файл подкачки и файлы операционной системы на разных физических дисках.

Поместите файл подкачки на отказоустойчивый диск. При отказе неотказоустойчивого диска может произойти системный сбой. Если вы помещаете файл подкачки на отказоустойчивый диск, помните, что отказоустойчивые системы часто медленнее записывают данные, потому что они записывают данные в несколько мест.

Используйте несколько дисков или дисковый массив, если вам нужна дополнительная пропускная способность диска для подкачки. Не размещайте несколько файлов подкачки в разных разделах одного физического диска.

Рекомендации по периферийной шине

В Windows Server 2022 основным хранилищем и сетевыми интерфейсами должны быть PCI Express (PCIe), поэтому рекомендуется использовать серверы с шинами PCIe. Чтобы избежать ограничений скорости шины, используйте слоты PCIe x8 и выше для адаптеров Ethernet емкостью 10 ГБ и более.

Рекомендации по дискам

Выбирайте диски с более высокой скоростью вращения, чтобы сократить время обслуживания случайных запросов (в среднем ~2 мс при сравнении дисков на 7 200 и 15 000 об/мин) и увеличить пропускную способность последовательных запросов. Однако существуют факторы стоимости, мощности и другие факторы, связанные с дисками с высокой скоростью вращения.

2,5-дюймовые диски корпоративного класса могут обслуживать значительно большее количество случайных запросов в секунду по сравнению с аналогичными 3,5-дюймовыми дисками.

Храните часто используемые данные, особенно данные с последовательным доступом, ближе к началу диска, поскольку это примерно соответствует самым внешним (самым быстрым) дорожкам.

Консолидация небольших дисков в несколько дисков большой емкости может снизить общую производительность хранилища. Меньшее количество шпинделей означает снижение параллелизма обслуживания запросов; и, следовательно, потенциально более низкая пропускная способность и более длительное время отклика (в зависимости от интенсивности рабочей нагрузки).

Использование твердотельных накопителей и высокоскоростных флэш-накопителей полезно для чтения в основном дисков с высокой скоростью ввода-вывода или операций ввода-вывода, чувствительных к задержкам. Загрузочные диски хорошо подходят для использования с твердотельными накопителями или высокоскоростными флэш-дисками, поскольку они могут значительно сократить время загрузки.

Твердотельные накопители NVMe обеспечивают превосходную производительность с большей глубиной очереди команд, более эффективной обработкой прерываний и большей эффективностью для команд размером 4 КБ. Это особенно полезно для сценариев, требующих интенсивного одновременного ввода-вывода.

Рекомендации по сетевым адаптерам и адаптерам хранения

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

Использование сертифицированного адаптера

Используйте адаптер, прошедший набор тестов Windows Hardware Certification.

64-разрядная версия

Адаптеры, поддерживающие 64-разрядные версии, могут выполнять операции прямого доступа к памяти (DMA) в области большой физической памяти (более 4 ГБ) и из них. Если драйвер не поддерживает DMA размером более 4 ГБ, система выполняет двойную буферизацию ввода-вывода в физическом адресном пространстве размером менее 4 ГБ.

Медные и оптоволоконные адаптеры

Медные адаптеры обычно имеют такую ​​же производительность, как и их оптоволоконные аналоги, а на некоторых адаптерах Fibre Channel доступны как медные, так и оптоволоконные кабели. В одних средах лучше использовать медные адаптеры, а в других — оптоволоконные.

Двух- или четырехпортовые адаптеры

Многопортовые адаптеры полезны для серверов с ограниченным количеством разъемов PCI.

Для устранения ограничений SCSI на количество дисков, которые можно подключить к шине SCSI, некоторые адаптеры предоставляют две или четыре шины SCSI на одной плате адаптера. Адаптеры Fibre Channel обычно не имеют ограничений на количество дисков, подключенных к адаптеру, если они не скрыты за интерфейсом SCSI.

Адаптеры Serial Attached SCSI (SAS) и Serial ATA (SATA) также имеют ограниченное количество подключений из-за последовательной природы протоколов, но с помощью коммутаторов можно подключить больше дисков.

Сетевые адаптеры имеют эту функцию для балансировки нагрузки или аварийного переключения. Использование двух однопортовых сетевых адаптеров обычно обеспечивает более высокую производительность, чем использование одного двухпортового сетевого адаптера для той же рабочей нагрузки.

Ограничение шины PCI может быть основным фактором ограничения производительности многопортовых адаптеров. Поэтому важно рассмотреть возможность размещения их в высокопроизводительном слоте PCIe, обеспечивающем достаточную пропускную способность.

Прервать модерацию

Некоторые адаптеры могут регулировать частоту прерывания процессоров хоста, чтобы указать на активность или ее завершение. Модерация прерываний часто может привести к снижению нагрузки на ЦП на хосте, но, если модерация прерываний не выполняется разумно; экономия ЦП может увеличить задержку.

Поддержка масштабирования на стороне приема (RSS)

RSS позволяет масштабировать прием-обработку пакетов в зависимости от количества доступных процессоров компьютера. Это особенно важно при использовании Ethernet со скоростью 10 ГБ и выше.

Возможность разгрузки и другие расширенные функции, такие как прерывание, сигнализируемое сообщением (MSI)-X

Адаптеры с возможностью разгрузки обеспечивают экономию ресурсов ЦП, что приводит к повышению производительности.

Перенаправление динамического прерывания и отложенного вызова процедуры (DPC)

В Windows Server 2022 Numa I/O позволяет адаптерам хранения PCIe динамически перенаправлять прерывания и DPC и может помочь любой многопроцессорной системе, улучшая разбиение рабочей нагрузки, частоту попаданий в кэш и использование встроенного аппаратного межсоединения для интенсивного ввода-вывода. рабочие нагрузки.

В этой статье представлены решения проблемы, из-за которой процесс LSAISO испытывает высокую загрузку ЦП на компьютере под управлением Windows.

Применимо к: Windows 10 — все выпуски, Windows Server 2016, Windows Server 2019
Исходный номер базы знаний: 4032786

Симптомы

Процесс LSAISO (изолированный LSA) сильно загружает ЦП на компьютере под управлением Windows 10, Windows Server 2016 или более поздних версий.

Причина

В Windows процесс LSAISO выполняется как процесс изолированного пользовательского режима (IUM) в новой среде безопасности, известной как виртуальный безопасный режим (VSM).

Приложения и драйверы, пытающиеся загрузить DLL в процесс IUM, внедрить поток или доставить APC пользовательского режима, могут дестабилизировать всю систему. Эта дестабилизация может включать в себя сценарий высокой загрузки ЦП LSAISO, упомянутый в разделе "Проблемы".

Решение 1. Используйте процесс исключения

Некоторые приложения (например, антивирусные программы) часто внедряют библиотеки DLL или ставят APC в очередь в процесс LSAISO. Это приводит к высокой загрузке ЦП процессом LSAISO.

Для устранения неполадок невозможно присоединить инструменты к процессу IUM.Это предотвращает использование средств отладки Windows или WPA\XPERF для захвата трассировки стека во время пиковой нагрузки ЦП LSAISO. Таким образом, лучший метод устранения неполадок в этом сценарии — использовать методологию «процесс устранения». Для этого отключите приложения и драйверы, пока скачок ЦП не будет уменьшен. После того, как вы определите, какое программное обеспечение вызывает проблему, обратитесь к поставщику за обновлением программного обеспечения. Вы можете ознакомиться с рекомендациями независимых поставщиков программного обеспечения, перечисленными в следующем разделе MSDN:

Этот метод может потребовать перезагрузки после отключения подозреваемого программного обеспечения и драйверов во время проверки на всплеск загрузки ЦП.

Решение 2. Проверьте наличие APC в очереди

Загрузите бесплатные средства отладки для Windows (WinDbg, KD, CDB, NTSD). Эти инструменты включены как в комплект драйверов Windows (WDK), так и в комплект драйверов Windows (WDK). Затем выполните следующие действия, чтобы определить, какой драйвер ставит APC в очередь на LSAISO:

Во время воспроизведения всплеска ЦП создайте дамп памяти ядра с помощью такого инструмента, как NotMyFault.exe, со следующего веб-сайта Sysinternals:

Не рекомендуется создавать полный дамп памяти, так как для этого потребуется расшифровка, если в системе включен VSM. Чтобы включить дамп ядра, выполните следующие действия:

  1. Откройте элемент "Система" на панели управления, а затем выберите "Дополнительные параметры системы".
  2. На вкладке "Дополнительно" диалогового окна "Свойства системы" выберите "Параметры" в области "Запуск и восстановление".
  3. В диалоговом окне "Запуск и восстановление" выберите "Дамп памяти ядра" в списке "Запись отладочной информации".
  4. Запишите расположение файла дампа, которое нужно использовать на шаге 5, а затем нажмите кнопку "ОК".

Откройте средство WinDbg.exe из инструментов отладки для Windows.

В меню "Файл" нажмите "Открыть аварийный дамп".

Перейдите к местоположению файла дампа ядра, которое вы отметили на шаге 1d, а затем выберите Открыть. Проверьте дату в файле .dmp, чтобы убедиться, что он был заново создан во время этого сеанса устранения неполадок.

В командном окне введите !apc и нажмите Enter.

Снимок экрана командной строки файла дампа ядра, на котором показано !apc.

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

Снимок экрана с выводом команды !apc. В этом примере драйвер с именем ProblemDriver.sys указан в LsaIso.exe.

Поиск результатов для LsaIso.exe. Если драйвер с именем

.sys указан в разделе LsaIso.exe (как показано на снимке экрана с примером выходных данных на шаге 6), обратитесь к поставщику, а затем направьте его на рекомендуемые меры по устранению, указанные в разделе Процессы изолированного пользовательского режима (IUM). .

Если в списке Lsaiso.exe нет драйверов, это означает, что процесс LSAISO не имеет очереди APC.

Подробнее

VSM использует режимы изоляции, известные как виртуальные уровни доверия (VTL), для защиты процессов IUM (трастлетов). Процессы IUM, такие как LSAISO, выполняются в VTL1, тогда как другие процессы выполняются в VTL0. Страницы памяти процессов, работающих в VTL1, защищены от любого вредоносного кода, работающего в VTL0.

До Windows 10 и Windows Server 2016 процесс службы подсистемы локального органа безопасности (LSASS) отвечал исключительно за управление локальной системной политикой, аутентификацию пользователей и аудит, а также обрабатывал конфиденциальные данные безопасности, такие как хэши паролей и Kerberos. ключи.

Чтобы использовать преимущества безопасности VSM, трастлет LSAISO, работающий в VTL1, взаимодействует через канал RPC с процессом LSAISO, работающим в VTL0. Секреты LSAISO шифруются перед отправкой в ​​LSASS, а страницы LSAISO защищены от любого вредоносного кода, работающего в VTL0.

В этой статье представлен обходной путь для решения проблемы высокой загрузки ЦП процессом WmiPrvSE.exe через регулярные промежутки времени.

Применимо к: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Window 10 — все выпуски
Исходный номер базы знаний: 4483874

Симптомы

При использовании компьютера под управлением Windows вы замечаете, что процесс узла поставщика инструментария управления Windows (WMI) (WmiPrvSE.exe) использует высокую загрузку ЦП (близкую к 100 процентам) в течение нескольких минут каждые 15–20 минут.

При возникновении проблемы используйте диспетчер задач, чтобы определить идентификатор процесса (PID) процесса WmiPrvSE.exe, который потребляет много ресурсов ЦП. Затем откройте командную строку с повышенными привилегиями и выполните следующую команду:

Отобразится список процессов WmiPrvSE.exe, в которых загружен этот модуль. ‎Обычно указывается только один процесс.Однако если у вас есть как 32-разрядные, так и 64-разрядные клиенты, вы можете увидеть два процесса.‎ Вот пример вывода:

Если PID указанного процесса совпадает с тем, который вы нашли в диспетчере задач, скорее всего, вы столкнулись с проблемой, описанной в этой статье.

Причина

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

Один или несколько процессов используют большое количество дескрипторов

Все дескрипторы хранятся в структуре ядра \BaseNamedObjects. Поставщик WMIPerfClass должен сканировать эту структуру при создании класса производительности, связанного с объектами Job.

Если эта структура раздута из-за большого количества дескрипторов, операция потребует высокой загрузки ЦП и займет больше времени, чем обычно.

‎Влияние этого условия может возникнуть, если процесс использует более 30 000 дескрипторов или общее количество дескрипторов в системе превышает 50 000.

Обновление, выпущенное в марте 2020 г. для поддерживаемых версий операционных систем, включает некоторую оптимизацию производительности и устраняет некоторые варианты этой проблемы. Дополнительные сведения об обновлении, применимом к вашей версии Windows, см. в истории обновлений Windows.

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

Это влияет на создание классов производительности процесса, поскольку необходимо запрашивать область памяти каждого запущенного процесса. Память, используемая процессом, может быть фрагментирована, что делает операцию более ресурсоемкой. Это происходит потому, что WMIPerfClass также запрашивает «затратные» счетчики производительности.

‎Вы можете проверить, включены ли дорогостоящие счетчики производительности, выполнив следующую команду PowerShell:

Если команда возвращает результаты, это указывает на то, что счетчики затратной производительности включены. Например:

<р> Win32_PerfFormattedData_PerfProc_FullImage_Costly

Win32_PerfRawData_PerfProc_FullImage_Costly Win32_PerfFormattedData_PerfProc_Image_Costly

Win32_PerfRawData_PerfProc_Image_Costly Win32_PerfFormattedData_PerfProc_ProcessAddressSpace_Costly
Win32_PerfRawData_PerfProc_ProcessAddressSpace_Costly

Win32_PerfFormattedData_PerfProc_ThreadDetails_Costly Win32_PerfRawData_PerfProc_ThreadDetails_Costly

Временное решение

Чтобы устранить проблему, определите процесс, который использует большое количество дескрипторов или большой объем памяти.‎ В процессе может быть утечка памяти или проблема с утечкой дескрипторов. В качестве обходного пути перезапустите процесс.

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

  • Windows Server 2016 / Windows 10 версии 1607 (RS1)
    18 октября 2018 г. — KB4462928 (сборка ОС 14393.2580)
  • Windows 10 версии 1703 (RS2)
    24 июля 2018 г. — KB4338827 (сборка ОС 15063.1235)
  • Windows 10 версии 1709 (RS3)
    24 июля 2018 г. — KB4338817 (сборка ОС 16299.579)
  • Windows 10 версии 1803 (RS4)
    16 июля 2018 г. — KB4345421 (сборка ОС 17134.167)

После установки накопительного обновления, если вам нужны классы, связанные со счетчиками производительности Costly, задайте для параметра Enable Costly Providers значение 1 (DWORD) в следующем подразделе реестра, чтобы они снова доступно:

Накопительное обновление не повлияет на поведение, когда процесс использует большое количество дескрипторов.

Эта проблема возникает, когда клиент запрашивает классы производительности. Обычно это приложение для мониторинга.

В качестве обходного пути вы также можете отключить приложение мониторинга, чтобы предотвратить создание классов производительности.

Подробнее

WMI предоставляет несколько классов производительности. Дополнительные сведения см. в разделе Классы счетчиков производительности.

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

WMIPerfClass — это модуль, который обрабатывает создание этих классов, когда клиент WMI запрашивает любой из них или перечисляет доступные классы.

Эти классы производительности хранятся в кэше, который становится недействительным через 15–20 минут. ‎Как только кеш становится недействительным, классы производительности необходимо создавать снова, если клиент запрашивает их.

В этой статье описана процедура диагностики и устранения проблем, вызванных высокой загрузкой ЦП на компьютере с Microsoft SQL Server. Хотя существует множество возможных причин высокой загрузки ЦП в SQL Server, наиболее распространенными являются следующие:

  • Высокие логические чтения, вызванные сканированием таблицы или индекса из-за следующих условий:
    • Статистика устарела.
    • Отсутствуют индексы
    • Плохой дизайн запросов

    Вы можете использовать следующие шаги для устранения проблем с высокой загрузкой ЦП в SQL Server.

    Шаг 1. Убедитесь, что SQL Server вызывает высокую загрузку ЦП

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

    Диспетчер задач: на вкладке "Процесс" проверьте, близко ли значение столбца ЦП для SQL Server Windows NT-64 Bit к 100 процентам.

    Монитор производительности и ресурсов (perfmon)

    • Счетчик: процесс/% пользовательского времени, % привилегированного времени
    • Экземпляр: sqlservr

    Вы можете использовать следующий скрипт PowerShell для сбора данных счетчика за 60 секунд:

    Если % пользовательского времени постоянно превышает 90 процентов, это означает, что процесс SQL Server вызывает высокую загрузку ЦП. Однако если вы заметите, что % привилегированного времени постоянно превышает 90 процентов, это указывает на то, что антивирусное программное обеспечение, другие драйверы или другой компонент ОС на компьютере способствуют высокой загрузке ЦП. Вам следует обратиться к системному администратору, чтобы проанализировать первопричину такого поведения.

    Шаг 2. Определите запросы, влияющие на загрузку ЦП

    Если процесс Sqlservr.exe вызывает высокую загрузку ЦП, определите запросы, ответственные за эту активность, выполнив следующий запрос:

    Шаг 3. Обновите статистику

    После того, как вы определите запросы с наибольшим потреблением ЦП, обновите статистику для соответствующих таблиц, задействованных в этих запросах. Системную хранимую процедуру sp_updatestats можно использовать для обновления статистики всех пользовательских и внутренних таблиц в текущей базе данных, как показано в следующем примере:

    Системная хранимая процедура sp_updatestats запускает UPDATE STATISTICS для всех пользовательских и внутренних таблиц в текущей базе данных. Для регулярного обслуживания убедитесь, что регулярное плановое обслуживание поддерживает статистику в актуальном состоянии. Используйте такие решения, как адаптивная дефрагментация индекса, для автоматического управления дефрагментацией индекса и обновлением статистики для одной или нескольких баз данных. Эта процедура автоматически выбирает, следует ли перестраивать или реорганизовывать индекс в соответствии с его уровнем фрагментации, среди прочих параметров, и обновляет статистику с линейным порогом.

    Дополнительную информацию о процедуре sp_updatestats см. в разделе sp_updatestats.

    Если SQL Server по-прежнему использует избыточную мощность ЦП, перейдите к следующему шагу.

    Шаг 4. Добавьте, возможно, отсутствующие индексы

    Выполните следующий запрос, чтобы определить запросы, вызывающие высокую загрузку ЦП и содержащие хотя бы один отсутствующий индекс в плане запроса:

    Просмотрите планы выполнения для выявленных запросов и настройте запрос, внеся необходимые изменения. На следующем снимке экрана показан пример, в котором SQL Server укажет на отсутствующий индекс для вашего запроса. Щелкните правой кнопкой мыши часть плана запроса «Отсутствующий индекс» и выберите «Сведения об отсутствующем индексе», чтобы создать индекс в другом окне в SQL Server Management Studio.

    Скриншот плана выполнения с отсутствующим индексом.

    Используйте следующий запрос, чтобы проверить наличие отсутствующих индексов и применить любые рекомендуемые индексы с высокими значениями показателя улучшения. Начните с 5 или 10 лучших рекомендаций из выходных данных, которые имеют наивысшее значение Improve_measure. Эти показатели оказывают наиболее значительное положительное влияние на производительность. Решите, хотите ли вы применять эти индексы, и убедитесь, что для приложения проведено тестирование производительности. Затем продолжайте применять рекомендации по отсутствующему индексу, пока не достигнете желаемых результатов производительности приложения.

    Шаг 5. Изучите проблемы, связанные с параметрами

    Используйте команду DBCC FREEPROCCACHE, чтобы проверить, устранена ли проблема высокой загрузки ЦП.

    Если проблема все еще существует, вы можете добавить подсказку запроса RECOMPILE к каждому из запросов с высокой загрузкой ЦП, определенных на шаге 2.

    Если проблема устранена, это указывает на проблему, связанную с параметрами (PSP, также известную как "проблема прослушивания параметров"). Чтобы устранить проблемы, связанные с параметрами, используйте следующие методы. У каждого метода есть свои недостатки и компромиссы.

    • Используйте подсказку запроса RECOMPILE для каждого выполнения запроса. Этот совет помогает сбалансировать небольшое увеличение использования ЦП при компиляции с более оптимальной производительностью для каждого выполнения запроса. Дополнительные сведения см. в разделах Повторное использование параметров и плана выполнения, Конфиденциальность параметров и Подсказка запроса RECOMPILE.

    Вот пример того, как вы можете применить это к своему запросу.

    Используйте подсказку запроса OPTIMIZE FOR, чтобы переопределить фактическое значение параметра, используя типичное значение параметра, достаточно подходящее для большинства возможных значений параметра.Этот вариант требует полного понимания оптимальных значений параметров и связанных с ними характеристик плана. Вот пример использования этой подсказки в запросе.

    Используйте подсказку запроса OPTIMIZE FOR UNKNOWN, чтобы заменить фактическое значение параметра средним значением вектора плотности. Вы также можете сделать это, захватив входящие значения параметров в локальные переменные, а затем используя локальные переменные в предикатах вместо использования самих параметров. Для этого исправления средняя плотность должна быть достаточно хорошей.

    Используйте подсказку запроса DISABLE_PARAMETER_SNIFFING, чтобы полностью отключить прослушивание параметров. Вот пример того, как использовать его в запросе:

    Используйте подсказку запроса KEEPFIXED PLAN, чтобы предотвратить повторную компиляцию в кэше. Этот обходной путь предполагает, что «достаточно хороший» общий план — это тот, который уже находится в кеше. Вы также можете отключить автоматическое обновление статистики, чтобы уменьшить вероятность того, что хороший план будет вытеснен и будет скомпилирован новый плохой план.

    Используйте команду DBCC FREEPROCCACHE в качестве временного решения, пока код приложения не будет исправлен. Вы можете использовать команду DBCC FREEPROCCACHE (plan_handle), чтобы удалить только тот план, который вызывает проблему. Например, чтобы найти планы запросов, которые ссылаются на таблицу Person.Person в AdventureWorks, вы можете использовать этот запрос для поиска дескриптора запроса. Затем вы можете освободить конкретный план запроса из кэша, используя DBCC FREEPROCCACHE (plan_handle), который создается во втором столбце результатов запроса.

    Шаг 6. Отключите интенсивную трассировку

    Проверьте наличие трассировки SQL или XEvent, которая влияет на производительность SQL Server и вызывает высокую загрузку ЦП. Например, вы обнаружите, что события аудита SQL вызывают высокие планы XML, события уровня событий инструкций, операции входа и выхода, блокировки и ожидания.

    Выполните следующие запросы, чтобы определить активные трассировки XEvent или сервера:

    Шаг 7. Устраните конфликт спин-блокировок SOS_CACHESTORE

    Если в вашем экземпляре SQL Server возникает серьезная конкуренция за спин-блокировку SOS_CACHESTORE или вы заметили, что ваши планы запросов часто удаляются при незапланированных рабочих нагрузках, прочтите следующую статью и включите флаг трассировки T174 с помощью команды DBCC TRACEON (174, -1):

    Если проблема высокой загрузки ЦП устраняется с помощью T174 , включите ее в качестве параметра запуска с помощью диспетчера конфигурации SQL Server.

    Шаг 8. Настройте виртуальную машину

    Если вы используете виртуальную машину, убедитесь, что вы не выделяете слишком много ЦП и что они правильно настроены. Дополнительные сведения см. в разделе Устранение неполадок с производительностью виртуальных машин ESX/ESXi (2001003).

    Шаг 9. Увеличение масштаба SQL Server

    Если отдельные экземпляры запросов используют небольшую мощность ЦП, но общая рабочая нагрузка всех запросов вызывает высокую загрузку ЦП, рассмотрите возможность масштабирования компьютера, добавив больше ЦП. Используйте следующий запрос, чтобы найти количество запросов, которые превысили определенный порог среднего и максимального потребления ЦП за одно выполнение и выполнялись много раз в системе (убедитесь, что вы изменили значения двух переменных в соответствии с вашей средой):

    Читайте также: