Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с CPU в SP / 18 сообщений из 18, страница 1 из 1
03.05.2018, 14:47
    #39639455
qqwwee1259
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
Есть хранимая процедура, вызывается порядка 500 раз в минуту.
avg cpu time = 200-300 миллисекунд.
Когда SP начинает вызываться 2000-3000 раз в минуту периодически (но не всегда) avg cpu time становится 2000-3000 миллисекунд.
Т.е. процессор при каждом вызове SP начинает потребляться в 10 раз больше.
План выполнения SP не меняется.
Кол-во строк немного меняется.
Проблемный statement внутри этой SP: insert into @TempTable ... join штук 15 больших таблиц
План выполнения statement не меняется.
Кол-во строк в statement немного меняется.
На SQL Server 2012 такой проблемы не было.
Проблема проявилась после перехода на SQL Server 2016. Обновление до SQL Server 2016 SP2 проблему не решило.
В плане параллелизм не используется.
Пробовал ставить maxdop = 1 на сервере, всё равно периодически cpu time прыгает с 200-300 миллисекунд до 2000-3000 миллисекунд.
Когда SP выполняется долго иногда помогает перекомпиляция SP, иногда помогает изменение sp_configure 'max degree of parallelism', иногда ничего не помогает и проблема проходит сама когда вызовов SP становится немного.
Что можно попробовать сделать? Что проверить?

версия: Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64) Mar 18 2018 09:11:49 Copyright (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: )
...
Рейтинг: 0 / 0
03.05.2018, 14:54
    #39639463
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259Что можно попробовать сделать?

1. Самое эффективное сделать avg cpu time = 20-30 миллисекунд.

2. Менее эффективное - сваять в процедуре цикл и исполнять постоянно.

3.
3000 раз в минуту = 50 раз в секунду

300 мс * 50 раз в секунду = 1500 мс.

А одна секунда = 1000 мс.
Всего лишь.

У вас, банально, начинается конкуренция между параллельно исполняющимися экземплярами.
...
Рейтинг: 0 / 0
03.05.2018, 15:17
    #39639482
qqwwee1259
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
> 1. Самое эффективное сделать avg cpu time = 20-30 миллисекунд.
Уменьшить уже не получится

> 2. Менее эффективное - сваять в процедуре цикл и исполнять постоянно.
В цикле сделать нельзя - SP запускается приложением

> 3. 300 мс * 50 раз в секунду = 1500 мс.
300 мс * 50 раз в секунду = 15000 мс. Это примерно загрузка 15 ядер на 100%
На сервере ядер намного больше.
Ядра сильно ничем больше не нагружены.

> У вас, банально, начинается конкуренция между параллельно исполняющимися экземплярами.
Больших wait-ов нет.
На 100% процы не грузятся.
...
Рейтинг: 0 / 0
03.05.2018, 17:48
    #39639595
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259периодически (но не всегда) avg cpu time становится 2000-3000 миллисекунд

какие ожидания в этот момент для проблемного spid, в котором выполняется процедура?
...
Рейтинг: 0 / 0
04.05.2018, 11:47
    #39639930
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259,

а что при этом с физическими чтениями?
Или это ожидание ресурсов (ядра, диски, память), или изменения плана запросов. Вы что, видите скачок с 10% до 100% загрузки? Как Вы узнали, что это именно "потребление процессора"?
...
Рейтинг: 0 / 0
04.05.2018, 15:15
    #39640122
qqwwee1259
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
> какие ожидания в этот момент для проблемного spid, в котором выполняется процедура?
Waits анализировал, с ними проблем нет.
Есть небольшое кол-во SOS_SCHEDULER_YIELD и других ожиданий, но их суммарное кол-во несопоставимо с тем насколько дольше стала работать хранимка.

> а что при этом с физическими чтениями?
Физических чтений совсем мало, диски не нагружены

> Или это ожидание ресурсов (ядра, диски, память), или изменения плана запросов.
Как уже писал выше проблем с wait-ами нет, высокой загрузки железа нет, план запросов не меняется.

> Вы что, видите скачок с 10% до 100% загрузки?
Про "скачок с 10% до 100% загрузки" я не писал. Писал что загрузка при большом кол-ве вызовов ХП при отсутствии проблем была бы эквивалента загрузке 15 процессоров, а процов намного больше.

> Как Вы узнали, что это именно "потребление процессора"?
:)
Вижу в Extended Events
...
Рейтинг: 0 / 0
04.05.2018, 16:35
    #39640198
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259,

а железо тоже самое осталось?
...
Рейтинг: 0 / 0
04.05.2018, 16:43
    #39640208
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259> какие ожидания в этот момент для проблемного spid, в котором выполняется процедура?
Waits анализировал, с ними проблем нет.
Есть небольшое кол-во SOS_SCHEDULER_YIELD и других ожиданий, но их суммарное кол-во несопоставимо с тем насколько дольше стала работать хранимка.

> а что при этом с физическими чтениями?
Физических чтений совсем мало, диски не нагружены

> Или это ожидание ресурсов (ядра, диски, память), или изменения плана запросов.
Как уже писал выше проблем с wait-ами нет, высокой загрузки железа нет, план запросов не меняется.

> Вы что, видите скачок с 10% до 100% загрузки?
Про "скачок с 10% до 100% загрузки" я не писал. Писал что загрузка при большом кол-ве вызовов ХП при отсутствии проблем была бы эквивалента загрузке 15 процессоров, а процов намного больше.

> Как Вы узнали, что это именно "потребление процессора"?
:)
Вижу в Extended Events

Т.е. ванга 80 левела уверяет нас, что сервер ничего не дает, но и процедуры не исполняет.
Надобно окропить сервер святой водой.

ЗЫ. Процессор не единственный ресурс, за который может идти конкуренция.
qqwwee1259Проблемный statement внутри этой SP: insert into @TempTable ... join штук 15 больших таблиц

пишет в журнал. А журнал - он один.
Да и "15 больших таблиц" неизвестно насколько велики.
Если в память не помещаются - оно еще и читает перманентно.
...
Рейтинг: 0 / 0
04.05.2018, 17:24
    #39640262
qqwwee1259
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
> а железо тоже самое осталось?
Железо новое

> Т.е. ванга 80 левела уверяет нас, что сервер ничего не дает, но и процедуры не исполняет.
Ничего подобного не писал. Писал что проблема с периодическим увеличением потребления CPU примерно в 10 раз при каждом вызове ХП при том же плане и примерно том же количестве строк.

> пишет в журнал. А журнал - он один.
Проблем с transaction log (соответствующих wait, загрузки железа) нет

> Да и "15 больших таблиц" неизвестно насколько велики.
> Если в память не помещаются - оно еще и читает перманентно.
Как уже писал ранее физических чтений совсем мало.
Практически всё к чему идёт обращение в buffer cache, оперативки много :)
...
Рейтинг: 0 / 0
04.05.2018, 17:51
    #39640292
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259,

ну у Вас задач в 10 раз больше, и "потребление", т.е. общее время выполнения (ожидание плюс рантайм) одной задачи в 10 раз больше. Что за паника?

Посмотрите, сколько запросов Running, а сколько Suspended в один момент времени. При любом количестве запросов в минуту Running будет примерно одинаковым. Соответственно, чем больше запросов в один момент времени приходит, тем больше находятся в состоянии Suspended.
...
Рейтинг: 0 / 0
04.05.2018, 18:00
    #39640301
qqwwee1259
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
> ну у Вас задач в 10 раз больше, и "потребление", т.е. общее время выполнения (ожидание плюс рантайм) одной задачи в 10 раз больше. Что за паника?
Похоже на троллинг какой то...
На всякий случай отвечу серьёзно: несколько раз уже писал что: 1. Проблема в том что CPU time становится примерно в 10 раз больше при КАЖДОМ вызове ХП. 2. Такие проблемы ИНОГДА возникают когда вызовов ХП становится раз в 5 больше обычного.
...
Рейтинг: 0 / 0
04.05.2018, 18:13
    #39640308
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259,

то есть Вы доказываете, что CPU совершает в 10 раз больше вычислений и нагрузка по ядрам при этом не вырастает в 10 раз?
...
Рейтинг: 0 / 0
04.05.2018, 19:52
    #39640363
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259,

У вас CPU все время на максимальной частоте работают? Не включен ли какой нибудь balanced power plan в биосе или ОС? Вряд ли бы конечно это увеличило время выполнения в 10 раз, но все равно проверьте.
Это физическая машина я надеюсь, не виртуалка?
...
Рейтинг: 0 / 0
04.05.2018, 20:08
    #39640370
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259,

статистику обновляли?
...
Рейтинг: 0 / 0
04.05.2018, 20:09
    #39640371
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
Как вариант, сервер в какой-то момент решает использовать параллельный план выполнения из-за чего время увеличивается по количеству ядер. Либо какой-то механизм добавляет ядер серверу при увеличении нагрузки. Виртуалка?
...
Рейтинг: 0 / 0
04.05.2018, 20:10
    #39640372
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
CPU time суммируется по всем ядрам для запроса.
...
Рейтинг: 0 / 0
05.05.2018, 01:03
    #39640502
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259> а железо тоже самое осталось?
Железо новое

> Т.е. ванга 80 левела уверяет нас, что сервер ничего не дает, но и процедуры не исполняет.
Ничего подобного не писал. Писал что проблема с периодическим увеличением потребления CPU примерно в 10 раз при каждом вызове ХП при том же плане и примерно том же количестве строк.
> пишет в журнал. А журнал - он один.
Проблем с transaction log (соответствующих wait, загрузки железа) нет

> Да и "15 больших таблиц" неизвестно насколько велики.
> Если в память не помещаются - оно еще и читает перманентно.
Как уже писал ранее физических чтений совсем мало.
Практически всё к чему идёт обращение в buffer cache, оперативки много :)
а это не spin lock contention ?
...
Рейтинг: 0 / 0
05.05.2018, 01:19
    #39640508
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с CPU в SP
qqwwee1259Проблемный statement внутри этой SP: insert into @TempTable ... join штук 15 больших таблиц

может посмотреть в сторону Differences between SQL Server temporary tables and table variables ?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с CPU в SP / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]