Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
висящий сервер
Guest
Периодически случается проблема, сервер СУБД намертво ложится по CPU - 100%.
СУБД: MSSQL 2008 R2.
Подключиться к Mangement Studio не возможно, на самой машине вообще ничего не работает,
Activity Monitor даже не запускается, удалённые подключения тоже не проходят.
Помогает только рестарт физического сервера. Но в Task Manager говорит, что в загруженности по CPU
виноват MSSQL.

Решил использовать Profiler для решения таких вопросов.
Хочется поймать запросы, которые вешают сервер.

в Profiler есть фильтр по CPU: greater than or equal.
Какое значение выставить?
у меня на сервере 8 ядер.
12 мар 14, 10:45    [15708527]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
Для начала временно ограничьте количество ядер для сиквела. Потом уже сможете анализировать.
12 мар 14, 11:20    [15708729]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
висящий сервер
Guest
invm
Для начала временно ограничьте количество ядер для сиквела. Потом уже сможете анализировать.

Server Properties=> Processors=> в Enable Processors снял галочку с Automatically set processor affinity mask for all processors.
поставил использование половины мощности CPU:
NumaNode0
CPU0
CPU1
CPU2
CPU3

вы это имели ввиду? или что-то другое?
12 мар 14, 11:33    [15708875]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31863
висящий сервер
Периодически случается проблема, сервер СУБД намертво ложится по CPU - 100%.
Сомневаюсь, что это сиквел всё лочит. Вы убедились для начала, что это процесс sqlserver.exe?
12 мар 14, 11:45    [15708948]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
висящий сервер
Guest
alexeyvg
висящий сервер
Периодически случается проблема, сервер СУБД намертво ложится по CPU - 100%.
Сомневаюсь, что это сиквел всё лочит. Вы убедились для начала, что это процесс sqlserver.exe?

да, в task manager это было так. это был sqlserver.exe
Но проблема периодическая, она может случиться раз в две недели или реже, но всё же случается.
12 мар 14, 11:50    [15708994]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
висящий сервер
вы это имели ввиду?
Да.
12 мар 14, 12:02    [15709117]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
invm, прибивайте активные процессы по одному и смотрите, какой вызывает нагрузку. Затем бейте по рукам программисту.
12 мар 14, 12:26    [15709342]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31863
Владислав Колосов
invm, прибивайте активные процессы по одному и смотрите, какой вызывает нагрузку. Затем бейте по рукам программисту.
Прикольный способ. А если их сотня в секунду? :-)
В конце концов, можно не прибивать по одному, а просто посмотреть на поле "использование процессора". А то уж как то совсем кустарно.

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

Тут два варианта:

1. Тяжёлый запрос, который создаёт боьшую нагрузку (может быть даже бага в коде - типа незамеченный кросс-джойн с дистинктом). Это самое простое, ловится профайлером напрямую, установкой фильтра на CPU.

2. Поток запросов, которые создают нагрузку (в том числе перекомпиляцией). Это выявить сложнее, нужно записать трассу в таблицу, и потом её поанализировать.
12 мар 14, 13:38    [15710063]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
висящий сервер
Guest
автор
Это самое простое, ловится профайлером напрямую, установкой фильтра на CPU.

вот у меня и вопрос.
в профайлере по фильтру CPU нужно какое значение указать?

General:
Use the template: standard (default)


Events Selection: Column Filters => CPU=> (Equals, Not equal to, greater than or equal ..)
12 мар 14, 16:42    [15711867]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
автор
Прикольный способ. А если их сотня в секунду? :-)


Тот, что грузит на 100% и не одну минуту, глаз сразу заметит
12 мар 14, 17:19    [15712145]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
Владислав Колосов
Member

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

Можно посмотреть на счетчики sys.dm_exec_procedure_stats, sys.dm_exec_query_stats. Хотя это тоже не гарантирует выявление виновника.
12 мар 14, 17:28    [15712216]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
висящий сервер
в профайлере по фильтру CPU нужно какое значение указать?
Ниже чем то, сколько CPU time (in milliseconds) потребляет ваш проблемный запрос, но не слишком низкое чтобы не нагружать сервер сбором ненужного мусора.
13 мар 14, 04:11    [15714682]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31863
висящий сервер
автор
Это самое простое, ловится профайлером напрямую, установкой фильтра на CPU.

вот у меня и вопрос.
в профайлере по фильтру CPU нужно какое значение указать?
Ну поставьте для начала 10 секунд (то есть 10000, поскольку фйильтр задаётся в миллисекундах). Потом будете менять.

Если такая ситуация редкая, можно поставить поменьше, 1000, и писать трассу в таблицу, потом разберётесь.
Владислав Колосов
автор
Прикольный способ. А если их сотня в секунду? :-)


Тот, что грузит на 100% и не одну минуту, глаз сразу заметит
В принципе да, но в такой ситуации, если видно, что CPU ушёл в 100%, то проще запустить sp_who2, и сразу увидеть виновника.
13 мар 14, 09:12    [15714926]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
висящий сервер
Guest
во вложении настройки профайлера.
выбирать должен Stored Procedures и TSQL в Event Selection?

К сообщению приложен файл. Размер - 96Kb
13 мар 14, 10:22    [15715300]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
Не пойму, как здесь поможет профайлер, который показывает usage процессорного времени после завершения выполнения запроса.
И, тем более, если идет спам запросов.
13 мар 14, 11:34    [15715833]     Ответить | Цитировать Сообщить модератору
 Re: Какое значение выставить для CPU в Profiler: greater than or equal?  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
Владислав Колосов,
Оценивать нужно не по CPU, а по CPU/duration.
13 мар 14, 11:44    [15715910]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить