Назад | Перейти на главную страницу

SQL Server медленно, но ЦП в норме

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

РЕДАКТИРОВАТЬ:

Единственными признаками проблемы, которую мы наблюдаем на сервере, являются сообщения журнала событий, информирующие нас о том, что «SQL Server обнаружил x экземпляров запросов ввода-вывода, для выполнения которых требовалось более 15 секунд».

Для меня это типичная проблема ввода-вывода (о, это то, что вы уже писали) :)

Я обычно не работаю с Windows, но основные проблемы те же:

  • это происходит случайно или в определенное время
    • вы запускаете резервную копию в указанное время
    • есть ли пакетные задания
    • есть ли какие-либо пакетные задания, о которых вы не знаете (да, дважды проверьте, может быть какой-то парень / девушка отправляет "пакетные задания" от клиента некоторым автоматическим способом)
    • какой-то маркетолог / разработчик, выполняющий неприятный запрос, который должен пройти через весь диск
    • это занимает некоторое время, поэтому эти люди обычно убивают своего клиента до завершения запроса и запуска другого, тем самым создавая еще больше операций ввода-вывода
  • Ваши диски здоровы?
  • Есть ли на компьютере какие-либо другие службы, связанные с вводом-выводом?
  • Сеть? (который не должна быть проблемой согласно сообщению об ошибке, но Мерфи никогда не спит)
  • Каковы исторические данные об использовании сервера?
  • Файловая система переполняется?
  • Кто-то (намеренно или нет) изменил приоритет?

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

Другая возможность заключается в том, что ваш виртуальный сервер занят чем-то интенсивным дисковым вводом-выводом (другими, более крупными или более сложными SQL-запросами, выполняющимися одновременно?), И ваш простой выбор также пытается читать с диска. Процессы, заблокированные из-за конфликтов ввода-вывода, не будут отображаться как загруженные ЦП. Хотя, если ваш простой выбор не является простым, но запрашивает много строк, я бы не ожидал, что это займет «несколько минут» даже в этих обстоятельствах, поэтому конкуренция за ресурсы хоста (возможно, за пропускную способность ввода-вывода) более вероятна.

Что ж, замедление должно быть связано либо с узким местом процессора или диска, либо с каким-то тайм-аутом, например ожиданием недоступного сетевого ресурса. Вы упомянули, что с процессором все в порядке, вы проверили среднюю длину очереди диска PerfMon и байт в секунду? Есть ли связанные с этим ошибки в журнале событий?

FWIW У меня есть несколько серверов SQL2005 (Standard и Workgroup), работающих на виртуальных машинах Hyper-V, и они работают нормально, поэтому нет никаких проблем.

JR

Если есть что-то, что замедляет SQL, так это медленные диски или неправильное выравнивание разделов. Я запускаю экземпляр SQL 2008 внутри виртуальной машины с Equallogic SAN для диска, и он превосходит любой из наших физических модулей SQL.

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

Я предполагаю, что ответ уже находится в одном из других ответов. Однако также стоит запустить EXEC sp_Who2 и убедиться, что ваши «простые запросы» не блокируются каким-либо длительным обновлением или подобным.

Раньше меня ловили на связанных таблицах MS Access, которые имеют ужасные привычки блокировки.

Расскажите подробнее о хранилище, поддерживающем ваш host / sql vm (local, iscsi (hw / sw), nfs, san, sas, sata, vendor и т. Д.)? Судя по вашему последнему комментарию, это хороший путь для более внимательного изучения.

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