Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
MS SQL 2012 грузит процессор примерно на 30%-50% почти постоянно. Дело происходит на сервере, внешние порты для sql-сервера закрыты, есть сайт, но он тоже отключен. Сервер - облачный хостинг, Win 2012. Версия Express и profiler там отсутствует.
Коннектов на порт 1433 в established - 4 штуки, все внутри сервера, в графе AppliedSettings (команда Get-NetTCPConnection) показано "Datacenter".
Из-за него весь сервер тормозит. Можно ли чем-то посмотреть что он там жуёт?
10 ноя 13, 10:20    [15104212]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
st_st
Из-за него весь сервер тормозит. Можно ли чем-то посмотреть что он там жуёт?
dbcc inputbuffer
10 ноя 13, 12:22    [15104364]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
Через EXEC sp_who 'active'; получаю spid процессов (31 штука) и выборочно через exec('dbcc inputbuffer(51)') получаю либо последний sql-запрос (если делаю тестовый запрос к отдельной бд, в данном случае сид-51), либо null для master (хотя в cmd указано назначение - TASK MANAGER (10 штук), TRACE QUEUE TASK и прочее, то есть 30 процессов висит в background, в основном к бд master и инесколько к бд NULL - LOG WRITER и т.д.). Процессор sql-сервером сейчас забит примерно на 40%. Может можно эти процессы как-то по одному поотрубать и посмотреть загруженность cpu.
10 ноя 13, 13:43    [15104446]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
st_st,

sys.dm_exec_requests в связке с sys.dm_exec_sql_text позволит Вам понять, что за запросы выполняются.
10 ноя 13, 13:50    [15104455]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
sys.dm_exec_requests запустил, выдало 30 записей, одная моя (подключение, с которого запускаю sys.dm_exec_requests) и 29 системных с null в sql handle, все либо background, либо sleeping (моя единственная running), wait resource пустое, wait time и last wait type заполнены, reads наибольшее у task manager - 300, writes почти у всех по нулям, 10-12 у пары есть и всё.
10 ноя 13, 14:43    [15104570]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
st_st,

А с CPU что?
10 ноя 13, 15:46    [15104764]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
cpu_time - у семи записей есть, у остальных ноль. Самое большее 2420906 у RESOURCE MONITOR (wait_type - SLEEP TASK), на втором месте LAZY WRITER c 2562 (wait_type - LAZYWRITER SLEEP), у оставшихся в основном меньше сотни. sqlservr.exe сейчас cpu постоянно скачет 25%-35%. Пару часов назад минут на 10-15 было затишье, cpu упало до 0% и всё летало, а сейчас опять грузит.
10 ноя 13, 16:26    [15104897]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
ОЗУ забито на 85-95% всегда, может это как-то влияет.
10 ноя 13, 16:28    [15104899]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
st_st
Версия Express и profiler там отсутствует.
Тогда sp_trace_create и прочие.
10 ноя 13, 18:54    [15105194]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
loviji
Member

Откуда: баку
Сообщений: 10
alexeyvg,
у вас есть доступ к бд master?
Возможно из-за CPU afinity mask.
10 ноя 13, 19:00    [15105216]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
CPU afinity mask - стоит автоматическая настройка, галочки задисаблены, к бд master доступ есть, да вобщем то ко всему доступ есть. Вобщем разгрузил ОЗУ до 74%, sql server упал до 0%, пока всё летает. Видимо напряг с оперативкой, придётся чуть обновить тарифный план на хостинге, одного гига озу на сервер видимо мало. Примерно при забитости ОЗУ от 85% и выше, sql server начинает жрать процессор, если ниже, то нормально.
11 ноя 13, 03:52    [15106497]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
А можно где-то в логах глянуть список исполненых запросов и время прихода на исполнение каждого запроса? Что-то ложит сервер пачкой запросов сразу же c периодичностью примерно раз в полтора часа. Судя по логам веб-сервера, внешних подозрительных http-соединений нет. На самом мониторе - всё время стандартная нагрузка примерно 2-4 запроса в секунду, затем скачок примерно до 60 и сервер ложится, откуда они берутся - это и хочется выяснить. После этих 60-ти запросов sql-сервер втупляет, монитор в ауте, IIS не получает ответа и начинает грузить проц на 100%, выдавая затем ошибку о невозможности подключения к бд. Из-за загруженности процессора sql-сервер в свою очередь не может выполнить запросы, ставит всем RUNNABLE и ждёт освобождения CPU, всё висит, замкнутый круг. Это пока примерное описание, возможно проблема совсем в другом. SQL-Монитор виснет и не могу ничего сделать. Поброю для IIS ограничить пожирание процессора, может тогда получится в мониторе отследить что за пачка запросов приходит.

На скрине момент секунд через 20-30 после события, монитор вроде ожил, хотя и висит как not responding

К сообщению приложен файл. Размер - 140Kb
4 янв 14, 18:48    [15377075]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
st_st,

Ставим себе это: Периодически отваливается Activity Monitor в MS SQL 2008. Как лечить?

Анализизируем это:

К сообщению приложен файл. Размер - 6Kb
4 янв 14, 22:00    [15377543]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
st_st
IIS не получает ответа и начинает грузить проц на 100%


Чего бы это, ему проц грузить?

st_st
сервер ложится ... sql-сервер втупляет ... монитор в ауте


М.б. из-за этого:

st_st
Сервер - облачный хостинг


?
4 янв 14, 22:07    [15377568]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
Да, сервер на хостинге по ресурсам не очень - выделяется 1 процессор и ОЗУ 2Гб. Но тем не менее судя по монитору, 2-4 запроса в секунду к бд держит, да и 10 тоже, но уже с напрягом. И откуда берётся этот периодичный резкий скачок в 60 запросов - непонятно. Поставил уже wireshark, так как по логам IIS трафик в пределах нормы, вроде так на первый взгляд тоже нормально всё. Может монитор показывает не приходящие новые запросы в секунду, а висящие в данный момент на исполнении? Тогда картина иная - по каким-то причинам виснет IIS, 4-6 запросов в секунду накапливаются и за 10 секунд получаем те самые 40-60 запросов на графике, им ставится runnable, iis висит и новых запросов нет, монитор сбрасывается 0. Это просто предположение.

Так, теперь по Performance Dashboard Reports. Поставил его. По CPU выдало один плохой запрос. В той таблице 4 поля - id(int, ключевое, стандартный индекс), product_id (nvarchar, хотя можно переделать в bigint, так как пока не попадались текстовые id), value(varbinary(max)), LastUpdate (datetime). В поле value лежат зипированые данные (LZMA), примерно 10-50 кб на одну запись. В основном из таблицы чтение, чуть реже update и ещё реже insert (insert примерно 1000 записей в сутки). В таблице сейчас 200 тысяч записей, растёт порядка 1000 в сутки.

Ну и скрин -

К сообщению приложен файл. Размер - 54Kb
5 янв 14, 10:25    [15378581]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
st_st,

Если кликнуть по тексту запроса, то можно увидеть его план.

автор
И откуда берётся этот периодичный резкий скачок в 60 запросов - непонятно.


Анализировать логи IISа?
5 янв 14, 11:32    [15378634]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
Как увижу что IIS грузит проц, попробую закрыть 80 порт на внешку. По логам IIS видно, что идут 2-3-4 http-запроса в секунду, никаких 60-ти там нет. Когда IIS подвисает, то запросы извне прекращаются, так как старые висят в режиме ожидания примерно по минуте, затем IIS возвращает им ответ - 500 error, не могу слединиться с базой данных (точнее ошибку подключения возвращает asp.net, но смысл тот же). Может IIS как-то сам по себе, начинает что-то оптимизировать у себя внутри и виснет, забирает ресурсы процессора себе, sql-сервер без ресурсов в итоге тоже подвисает. Для проверки теории надо IIS-у попробовать поставить ограничение на использование ресурсов, чтобы sql-сервер работал нормально во всех случаях и затестить будет ли ошибка подключения к бд.

Так, по плану запроса, скрин -

К сообщению приложен файл. Размер - 25Kb
5 янв 14, 12:11    [15378663]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
st_st,

В плане Clustered Index Scan. Т.е. индекса по product_id нет. Создавайте.
5 янв 14, 14:25    [15378851]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
ID товара перегнал из текстового в цифровое, индекс создал и запрос исчез из списка CPU, ощутимо шустрее всё заработало. Ту самую нагрузку в 60 запросов сегодня поймать неудалось, но наверное это уже вопросы к IIS, пока послежу за нагрузкой в ближайшее время.
Спасибо за ответы, пока наверное всё, будем дальше работать.
5 янв 14, 19:20    [15379311]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
Baby_Doll
Member

Откуда:
Сообщений: 210
Подскажите, как можно решить следующую проблему: есть ряд компов стандартной конфигурации: четырехъядерный процессор i5-4430, 8Гб памяти, жесткий 500Гб на котором система (Windows 2008 R2) и SSD 60 Гб на котором базы. Установлен SQL 2012 STANDART.
Есть три базы, назовем их условно A, B и C. Размер первой базы 350Мб, размер второй базы 700Мб и размер третьей базы - 1Гб.
Обмен данных между базами построен таким образом:
Данные в базу A и C заносятся из приложения (exe-файл). Данные из базы A попадают в базу B с помощью службы, которая с определенным интервалом апдейтит данные в базе B на основании данных базы A. В момент, когда происходит апдейт в базе B срабатывает триггер и данные переносятся в базу C. Т.е. в базу С данные могут попасть как из приложения так и по срабатыванию триггера из базы В.
Не спрашивайте меня почему выбрана такая модель работы - я не смогу ответить Просто надо принять это как должное.
Так вот, проблема в том, что когда срабатывает триггер, то загрузка всех четырех ядер подпрыгивает до 100%. Поскольку служба почти постоянно делает апдейт в базе B, даже если данные там реально не поменялись (косяк службы, исходников нет, автор службы недоступен), то триггер срабатывает очень часто. Естественно, комп в это время еле ворочается. Чтобы как-то его "оживить" у меня возникла идея - попытаться сделать так, чтобы для отработки триггеров было задействовано одно (максимум два) ядра из четырех. Остальные манипуляции не особо нагружают процессор и двух ядер (для остальных задач) будет более чем достаточно.
Реально ли такую манипуляцию сделать исключительно средствами администрирования SQL-сервера? Если да, то как? Я пыталась сделать через настройку Max degree of parallelism (поставила в единицу) - не помогло. В общем, очень нужен совет как добиться того, чтобы триггера не отъедали весь процессорный ресурс. Спасибо!
7 фев 14, 10:19    [15532721]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Как вариант - переписать триггер, оптимизировав планы выполнения.
7 фев 14, 10:40    [15532886]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
Baby_Doll
Поскольку служба почти постоянно делает апдейт в базе B, даже если данные там реально не поменялись
В триггере можно проверить, менялись реально данные или нет.
7 фев 14, 12:07    [15533507]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
Baby_Doll
Member

Откуда:
Сообщений: 210
Я понимаю, что можно оптимизировать триггер и, вообще, с ним поработать. Но вопрос был изначально другой: как исключительно средствами администрирования SQL-сервера на работу с триггерами выделить ресурсы только одного ядра?
8 фев 14, 01:29    [15538201]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
Baby_Doll
Member

Откуда:
Сообщений: 210
А в самом триггере можно как-то указать использовать только одно ядро из четырех?
8 фев 14, 02:07    [15538301]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL грузит процессор  [new]
aleks2
Guest
Baby_Doll
А в самом триггере можно как-то указать использовать только одно ядро из четырех?


Напиши ко всем запросам триггера в хвост OPTIONS(MAXDOP 1).

Только это поза страуса.
8 фев 14, 08:18    [15538574]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить