Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
Есть хранимая процедура, вызывается порядка 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: ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 14:47 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259Что можно попробовать сделать? 1. Самое эффективное сделать avg cpu time = 20-30 миллисекунд. 2. Менее эффективное - сваять в процедуре цикл и исполнять постоянно. 3. 3000 раз в минуту = 50 раз в секунду 300 мс * 50 раз в секунду = 1500 мс. А одна секунда = 1000 мс. Всего лишь. У вас, банально, начинается конкуренция между параллельно исполняющимися экземплярами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 14:54 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
> 1. Самое эффективное сделать avg cpu time = 20-30 миллисекунд. Уменьшить уже не получится > 2. Менее эффективное - сваять в процедуре цикл и исполнять постоянно. В цикле сделать нельзя - SP запускается приложением > 3. 300 мс * 50 раз в секунду = 1500 мс. 300 мс * 50 раз в секунду = 15000 мс. Это примерно загрузка 15 ядер на 100% На сервере ядер намного больше. Ядра сильно ничем больше не нагружены. > У вас, банально, начинается конкуренция между параллельно исполняющимися экземплярами. Больших wait-ов нет. На 100% процы не грузятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 15:17 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259периодически (но не всегда) avg cpu time становится 2000-3000 миллисекунд какие ожидания в этот момент для проблемного spid, в котором выполняется процедура? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 17:48 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259, а что при этом с физическими чтениями? Или это ожидание ресурсов (ядра, диски, память), или изменения плана запросов. Вы что, видите скачок с 10% до 100% загрузки? Как Вы узнали, что это именно "потребление процессора"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 11:47 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
> какие ожидания в этот момент для проблемного spid, в котором выполняется процедура? Waits анализировал, с ними проблем нет. Есть небольшое кол-во SOS_SCHEDULER_YIELD и других ожиданий, но их суммарное кол-во несопоставимо с тем насколько дольше стала работать хранимка. > а что при этом с физическими чтениями? Физических чтений совсем мало, диски не нагружены > Или это ожидание ресурсов (ядра, диски, память), или изменения плана запросов. Как уже писал выше проблем с wait-ами нет, высокой загрузки железа нет, план запросов не меняется. > Вы что, видите скачок с 10% до 100% загрузки? Про "скачок с 10% до 100% загрузки" я не писал. Писал что загрузка при большом кол-ве вызовов ХП при отсутствии проблем была бы эквивалента загрузке 15 процессоров, а процов намного больше. > Как Вы узнали, что это именно "потребление процессора"? :) Вижу в Extended Events ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 15:15 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259, а железо тоже самое осталось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 16:35 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259> какие ожидания в этот момент для проблемного spid, в котором выполняется процедура? Waits анализировал, с ними проблем нет. Есть небольшое кол-во SOS_SCHEDULER_YIELD и других ожиданий, но их суммарное кол-во несопоставимо с тем насколько дольше стала работать хранимка. > а что при этом с физическими чтениями? Физических чтений совсем мало, диски не нагружены > Или это ожидание ресурсов (ядра, диски, память), или изменения плана запросов. Как уже писал выше проблем с wait-ами нет, высокой загрузки железа нет, план запросов не меняется. > Вы что, видите скачок с 10% до 100% загрузки? Про "скачок с 10% до 100% загрузки" я не писал. Писал что загрузка при большом кол-ве вызовов ХП при отсутствии проблем была бы эквивалента загрузке 15 процессоров, а процов намного больше. > Как Вы узнали, что это именно "потребление процессора"? :) Вижу в Extended Events Т.е. ванга 80 левела уверяет нас, что сервер ничего не дает, но и процедуры не исполняет. Надобно окропить сервер святой водой. ЗЫ. Процессор не единственный ресурс, за который может идти конкуренция. qqwwee1259Проблемный statement внутри этой SP: insert into @TempTable ... join штук 15 больших таблиц пишет в журнал. А журнал - он один. Да и "15 больших таблиц" неизвестно насколько велики. Если в память не помещаются - оно еще и читает перманентно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 16:43 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
> а железо тоже самое осталось? Железо новое > Т.е. ванга 80 левела уверяет нас, что сервер ничего не дает, но и процедуры не исполняет. Ничего подобного не писал. Писал что проблема с периодическим увеличением потребления CPU примерно в 10 раз при каждом вызове ХП при том же плане и примерно том же количестве строк. > пишет в журнал. А журнал - он один. Проблем с transaction log (соответствующих wait, загрузки железа) нет > Да и "15 больших таблиц" неизвестно насколько велики. > Если в память не помещаются - оно еще и читает перманентно. Как уже писал ранее физических чтений совсем мало. Практически всё к чему идёт обращение в buffer cache, оперативки много :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 17:24 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259, ну у Вас задач в 10 раз больше, и "потребление", т.е. общее время выполнения (ожидание плюс рантайм) одной задачи в 10 раз больше. Что за паника? Посмотрите, сколько запросов Running, а сколько Suspended в один момент времени. При любом количестве запросов в минуту Running будет примерно одинаковым. Соответственно, чем больше запросов в один момент времени приходит, тем больше находятся в состоянии Suspended. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 17:51 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
> ну у Вас задач в 10 раз больше, и "потребление", т.е. общее время выполнения (ожидание плюс рантайм) одной задачи в 10 раз больше. Что за паника? Похоже на троллинг какой то... На всякий случай отвечу серьёзно: несколько раз уже писал что: 1. Проблема в том что CPU time становится примерно в 10 раз больше при КАЖДОМ вызове ХП. 2. Такие проблемы ИНОГДА возникают когда вызовов ХП становится раз в 5 больше обычного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 18:00 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259, то есть Вы доказываете, что CPU совершает в 10 раз больше вычислений и нагрузка по ядрам при этом не вырастает в 10 раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 18:13 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259, У вас CPU все время на максимальной частоте работают? Не включен ли какой нибудь balanced power plan в биосе или ОС? Вряд ли бы конечно это увеличило время выполнения в 10 раз, но все равно проверьте. Это физическая машина я надеюсь, не виртуалка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 19:52 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259, статистику обновляли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 20:08 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
Как вариант, сервер в какой-то момент решает использовать параллельный план выполнения из-за чего время увеличивается по количеству ядер. Либо какой-то механизм добавляет ядер серверу при увеличении нагрузки. Виртуалка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 20:09 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
CPU time суммируется по всем ядрам для запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 20:10 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259> а железо тоже самое осталось? Железо новое > Т.е. ванга 80 левела уверяет нас, что сервер ничего не дает, но и процедуры не исполняет. Ничего подобного не писал. Писал что проблема с периодическим увеличением потребления CPU примерно в 10 раз при каждом вызове ХП при том же плане и примерно том же количестве строк. > пишет в журнал. А журнал - он один. Проблем с transaction log (соответствующих wait, загрузки железа) нет > Да и "15 больших таблиц" неизвестно насколько велики. > Если в память не помещаются - оно еще и читает перманентно. Как уже писал ранее физических чтений совсем мало. Практически всё к чему идёт обращение в buffer cache, оперативки много :) а это не spin lock contention ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2018, 01:03 |
|
||
|
Проблема с CPU в SP
|
|||
|---|---|---|---|
|
#18+
qqwwee1259Проблемный statement внутри этой SP: insert into @TempTable ... join штук 15 больших таблиц может посмотреть в сторону Differences between SQL Server temporary tables and table variables ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2018, 01:19 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39640301&tid=1689789]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 375ms |

| 0 / 0 |
