Постоянная загрузка ЦП SQL Server 2012

Я пытаюсь диагностировать ненормальное использование ЦП процессом sqlservr.exe из установки SQL Server 2012 Express.

] Установка выполняется на виртуальной машине с Windows Server 2012 R2, 8-ядерным процессором Xeon E5 и 8 ГБ ОЗУ.

Загрузка процессора (как из ProcessExplorer, так и из диспетчера задач) постоянно находится на уровне примерно 12-15%. Перезапуск службы не имеет никакого эффекта, загрузка ЦП вернется на тот же уровень через несколько минут после перезапуска.

Моя самая большая проблема в том, что сервер SQL был связан со сторонним программным обеспечением, и у меня нет доступа к базе данных. Мне был предоставлен доступ только для чтения к базе данных программного обеспечения (я могу получить доступ только к представлениям, а не к таблицам), но я не могу запускать какие-либо отчеты из SSMS или выполнять это .

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

Могу ли я что-нибудь еще попытаться определить источник высокой загрузки ЦП?

1
задан 23 May 2017 в 15:41
1 ответ

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

Что может делать пользователь с разрешениями VIEW SERVER STATE?

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

  • Память - Доступные МБ
  • Физический диск - Сред. Диск, сек / чтение
  • Физический диск - средн. Disk sec / Write
  • Physical Disk - Disk Reads / sec
  • Physical Disk - Disk Writes / sec
  • Processor -% Processor Time
  • SQLServer: General Statistics - User Connections
  • SQLServer: Memory Manager - Ожидаемые гранты памяти
  • SQLServer: Статистика SQL - Пакетных запросов / сек
  • SQLServer: Статистика SQL - Компиляций / сек
  • SQLServer: Статистика SQL - Повторных компиляций / сек
  • Система - Длина очереди процессора

Эти счетчики перечислены в соответствии со следующей статьей Рекомендации SQL Server Perfmon (Performance Monitor) .

Поскольку у вас загружается ЦП, следующая цитата из статьи Брента кажется адекватной:

Ищите очевидные узкие места ЦП

Во-первых, посмотрите на длину очереди процессора для определения нагрузки на ЦП. Если это число в среднем равно 1 или выше (за исключением периода полного резервного копирования SQL Server, если вы используете сжатие резервных копий), это означает, что все ожидает, когда ЦП станет доступным.

Я подозреваю, когда это число больше 1 , потому что это часто означает, что люди установили другое программное обеспечение на SQL Server, например приложения или веб-сайты. Это проблема. Если вы получите возражение со стороны руководства о том, что оно не хочет покупать новые серверы, укажите, что два ЦП с лицензией SQL Server Enterprise стоят около 50–60 тыс. Долларов, что позволяет заплатить за отдельный сервер для веб-приложения. Если вы можете исключить приложения из SQL Server, тогда вам не придется использовать столько мощности процессора, а меньшее количество процессоров означает меньшие затраты на лицензирование.

Есть более подробные метрики Perfmon, которые вы можете добавить в свой захват, если вы видите, что отображается длина очереди процессора, но для младших администраторов баз данных первое, что я бы порекомендовал, - это просто удаленный рабочий стол в SQL Server. Щелкните правой кнопкой мыши на панели задач, выберите «Диспетчер задач» и перейдите на вкладку «Процессы». Установите флажок, в котором отображаются процессы для всех пользователей, а затем щелкните столбец ЦП, чтобы отсортировать процент ЦП от высокого к низкому. Сядьте и посмотрите минуту или две. Какие процессы используют мощность процессора? Если это SQLServer, то нам нужно провести дополнительные исследования, но есть большая вероятность, что это другое приложение, , и нам нужно убрать это приложение с этого сервера. Вообще говоря, включение гиперпоточности на SQL Server не решит такой проблемы.

Если процесс sqlserver.exe единственный с 12-15% загрузкой, вам потребуются дополнительные разрешения, чтобы иметь возможность анализировать первопричина.

1
ответ дан 3 December 2019 в 23:38

Теги

Похожие вопросы