Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций. / 25 сообщений из 48, страница 1 из 2
15.07.2019, 15:26
    #39837490
noexp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Всем добрый день.
Столкнулись с такой проблемой:
в непредсказуемое время некоторые хранимки начинают очень долго отрабатывать (сотни секунд). Потом когда пробуешь повторить, они 20мс выдают. Подозреваем локи, но не можем их отловить.

Сервер MS SQL 2017, данные находятся на SSD в raid1, tempdb на другом ssd в raid0. Дисковая очередь до 1 не добирается.
Оперативы 128 Гб, проц Xeon, 64 логических ядра.
Все запросы отрабатываются через хранимые процедуры, то есть, никаких неожиданных запросов нет, все можно замерить.
Есть свой логгер, который отслеживает длительность отработки хранимок, и алертит, если выполнение идет слишком долго. Это позволяет находить узкие места и оптимизировать их.

С помощью логгера эту проблему и поймали - логгер фиксирет долгое время выполнения хранимок. Дальше идешь их анализировать - а они отрабатывают нормально. Все срабатывания группируются по времени, например, с 12:03-12:06 несколько разных хранимок могут начать тупить, а потом дальше логи пустые и в MS SMSS в плане выполнения все нормально.
С журналом событий винды корреляций не замечено тоже - но может не туда смотрим.
Версий несколько - лок, сеть, обновления винды %) (обновления вроде уже как отсекли).

Собственно, вропрос в том, как дальше отлавливать эту проблему. Несколько раз получалось прямо в момент проявления симптома застать БД, но так как непонятно, куда смотреть - то так ничего и не прояснилось.

Рассматриваем вариант приглашения профильного специалиста для проведения анализа или платной консультации. Оплата по безналу от ООО, надо будет подписать NDA.

Модератор: За платными услугами вот сюда: https://www.sql.ru/forum/job
...
Рейтинг: 0 / 0
15.07.2019, 15:36
    #39837498
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
ожидания смотрите в момент,
когда тормозит:

Код: sql
1.
2.
3.
4.
5.
6.
7.
select s.login_name,      
       wt.*
from sys.dm_os_waiting_tasks wt
     join sys.dm_exec_sessions s
        on wt.session_id = s.session_id
where s.is_user_process = 1 --and s.session_id <> @@spid
order by wait_duration_ms desc;



или в джоб повесьте с нужным фильтром на длительность ожидания (wait_duration_ms),
пускай в таблицу скидывает.
план и текст к этому всему ищется через sys.dm_exec_requests
...
Рейтинг: 0 / 0
15.07.2019, 15:46
    #39837505
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
noexp например, с 12:03-12:06 несколько разных хранимок могут начать тупить, а потом дальше логи пустые и в MS SMSS в плане выполнения все нормально.

Checkpoint?
...
Рейтинг: 0 / 0
15.07.2019, 15:46
    #39837506
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
нагуглите скрипт, которым можно смотреть блокировки,
или же у вас план исполнения кривой, его тоже можно фиксировать, потом сравнить - когда хорошо и когда плохо
...
Рейтинг: 0 / 0
15.07.2019, 15:47
    #39837510
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Критикего тоже можно фиксировать

тут фиксировать - в смысле сохранять
...
Рейтинг: 0 / 0
15.07.2019, 15:52
    #39837515
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Критикнагуглите скрипт, которым можно смотреть блокировки ,
или же у вас план исполнения кривой, его тоже можно фиксировать, потом сравнить - когда хорошо и когда плохо
и если это НЕ блокировки, а банальные ожидания диска?
как выше написали, может это чекпойнт долбит страницы на диск?

ожидания надо смотреть.
что вылезет, то вылезет.
совсем необязательно это именно блокировки
...
Рейтинг: 0 / 0
15.07.2019, 16:03
    #39837519
noexp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Yasha123ожидания смотрите в момент,
когда тормозит:
...
или в джоб повесьте с нужным фильтром на длительность ожидания (wait_duration_ms),
пускай в таблицу скидывает.
план и текст к этому всему ищется через sys.dm_exec_requests

Ну, в момент тормозов выполнялась эта штука:
Код: sql
1.
2.
3.
4.
5.
6.
7.
-- текущая ситуация на сервере (выполняемые запросы)
select session_id, status, wait_type, command, last_wait_type, percent_complete, qt.text, total_elapsed_time/1000 as [total_elapsed_time, сек],
       wait_time/1000 as [wait_time, сек], (total_elapsed_time - wait_time)/1000 as [work_time, сек]
  from sys.dm_exec_requests as qs
  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
  where session_id >= 50 and session_id <> @@spid
  order by 1


Но она просто показала что да, хранимки долго отрабатывают.
А что дальше - непонятно. План выполнения норм. Что делать с инфой, что она дольше обычного выполняется, хз =(
Сейчас та же самая хранимка и не тупит ни разу.
...
Рейтинг: 0 / 0
15.07.2019, 16:08
    #39837526
noexp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Yasha123и если это НЕ блокировки, а банальные ожидания диска?
как выше написали, может это чекпойнт долбит страницы на диск?

ожидания надо смотреть.

Ну, про ожидания диска - дисковая очередь пустая, думаю, там бы тоже что-то проявлялась.
Про ожидания скрипт в любом случае заготовил, спасибо.
И про чекпоинт погуглю - что-то я впервые услышал, надо пойти поизучать.
...
Рейтинг: 0 / 0
15.07.2019, 16:24
    #39837532
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
noexpНу, в момент тормозов выполнялась эта штука:
...
Но она просто показала что да, хранимки долго отрабатывают.
А что дальше - непонятно.
и что было в wait_type?
...
Рейтинг: 0 / 0
15.07.2019, 16:40
    #39837541
noexp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Yasha123и что было в wait_type?

Да это не то же самое, что я прогонял тогда, как я понял - сейчас заготовил эту хранику и прогоню при воспроизведении, спасибо.
Про чекпоинты мысль интересная, нашел уже статей.
...
Рейтинг: 0 / 0
15.07.2019, 16:52
    #39837546
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
noexpДа это не то же самое, что я прогонял тогда, как я понял - сейчас заготовил эту хранику и прогоню при воспроизведении, спасибо.
Про чекпоинты мысль интересная, нашел уже статей.
при чекпойнте очередь к диску была бы.
а раз у вас не было, там что угодно другое было.
ваш запрос тоже показал бы,
просто в случае именно блокировок,
мой покажет, кем блокируется, а ваш нет.
но чтобы понять, чего именно ожидали, вашего хватит.

у нас, например, недавно все висели с ASYNC_NETWORK_IO.
это бэкап по сети копировался,
т.к. им приспичило срочно ресторить.
все выполнялось непомерно долго,
но на самом деле -- мгновенно,
а все висели, т.к. клиент фетчил результат в час по чайной ложке
...
Рейтинг: 0 / 0
15.07.2019, 17:59
    #39837572
noexp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
UP: Нашел запрос для просмотра статистики типов ожиданий:
http://sqlcom.ru/block-deadlock-and-latch/sql-server-wait-types-library/
И он выдал такую картину:

Не очень понимаю, как это трактовать - в распараллеливание все упирается что ли.
Ну, в общем, пока яснее не стало..
...
Рейтинг: 0 / 0
15.07.2019, 18:00
    #39837573
noexp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
noexpИ он выдал такую картину:
...
Рейтинг: 0 / 0
15.07.2019, 18:21
    #39837585
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
насколько тяжелая база?
сними копию (если получится через backup, т.к. detach наверное пока лучше не рисковать)
затем может попробуй что-то из серии ALTER DATABASE ... SET SINGLE_USER WITH ...

кстати эксперименты можешь и на копии делать
(после restore, ну и WITH MOVE куда-нибудь в надёжное и заведомо доступное место)
при этом убив в разрешениях ролей всех реальных пользователей кроме себя
потому что в д.сл. гонятся за kill_sessions - как из пушки по воробьям.
...
Рейтинг: 0 / 0
15.07.2019, 18:22
    #39837587
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
упс, не та тема, игнор пож.
...
Рейтинг: 0 / 0
15.07.2019, 18:30
    #39837593
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
noexpUP: Нашел запрос для просмотра статистики типов ожиданий:
http://sqlcom.ru/block-deadlock-and-latch/sql-server-wait-types-library/
И он выдал такую картину:

Не очень понимаю, как это трактовать - в распараллеливание все упирается что ли.
Ну, в общем, пока яснее не стало..
не надо вам статистику.
надо ожидания ВАШЕЙ ПРОБЛЕМНОЙ СЕССИИ в тот момент, когда она висит.
вам нало узнать, что ждет ваша сп, а не то, что жлали вообще все с момента рестарта
...
Рейтинг: 0 / 0
15.07.2019, 20:16
    #39837612
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
noexp,

я бы посоветовал еще query store включить раз у вас версия сиквела позволяет.
с этой штукой сможете видеть в каких случаях происходила деградация плана отдельно взятой хранимки
...
Рейтинг: 0 / 0
16.07.2019, 10:33
    #39837746
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Yasha123ожидания смотрите в момент,
когда тормозит:

Код: sql
1.
2.
3.
4.
5.
6.
7.
select s.login_name,      
       wt.*
from sys.dm_os_waiting_tasks wt
     join sys.dm_exec_sessions s
        on wt.session_id = s.session_id
where s.is_user_process = 1 --and s.session_id <> @@spid
order by wait_duration_ms desc;



или в джоб повесьте с нужным фильтром на длительность ожидания (wait_duration_ms),
пускай в таблицу скидывает.
план и текст к этому всему ищется через sys.dm_exec_requests

Profiler можно настроить пусть ловит и складывает в файлы
...
Рейтинг: 0 / 0
16.07.2019, 11:36
    #39837791
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Ролг ХупинYasha123ожидания смотрите в момент,
когда тормозит:

Код: sql
1.
2.
3.
4.
5.
6.
7.
select s.login_name,      
       wt.*
from sys.dm_os_waiting_tasks wt
     join sys.dm_exec_sessions s
        on wt.session_id = s.session_id
where s.is_user_process = 1 --and s.session_id <> @@spid
order by wait_duration_ms desc;



или в джоб повесьте с нужным фильтром на длительность ожидания (wait_duration_ms),
пускай в таблицу скидывает.
план и текст к этому всему ищется через sys.dm_exec_requests

Profiler можно настроить пусть ловит и складывает в файлы
и где именно в профайлере настраивается ловля ожиданий?
...
Рейтинг: 0 / 0
16.07.2019, 11:41
    #39837794
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Yasha123ожидания смотрите в момент,
когда тормозит:

Код: sql
1.
2.
3.
4.
5.
6.
7.
select s.login_name,      
       wt.*
from sys.dm_os_waiting_tasks wt
     join sys.dm_exec_sessions s
        on wt.session_id = s.session_id
where s.is_user_process = 1 --and s.session_id <> @@spid
order by wait_duration_ms desc;



или в джоб повесьте с нужным фильтром на длительность ожидания (wait_duration_ms),
пускай в таблицу скидывает.
план и текст к этому всему ищется через sys.dm_exec_requests

если spid известен, то вьюха sys.dm_exec_session_wait_stats в помощь
...
Рейтинг: 0 / 0
16.07.2019, 11:45
    #39837797
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
komradесли spid известен, то вьюха sys.dm_exec_session_wait_stats в помощь
в статистике (sys.dm_exec_session_wait_ stats ) нет spid-а,
там есть суммарные на весь сервер значения со времен рестарта.
если же вы про sys.dm_os_waiting_ tasks , где как раз есть spid,
то чем мой скрипт не угодил?
...
Рейтинг: 0 / 0
16.07.2019, 11:47
    #39837799
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
komrad ,
прошу прощения.
не на ту dmv смотрю.
у нас 2014, там этого нет,
буду иметь в виду на будущее
...
Рейтинг: 0 / 0
16.07.2019, 11:48
    #39837802
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Yasha123,

я имел ввиду, что если тормозит определенная сессия, то есть вью для сессионных ожиданий
...
Рейтинг: 0 / 0
16.07.2019, 11:49
    #39837803
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
Yasha123 komrad ,
прошу прощения.
не на ту dmv смотрю.
у нас 2014, там этого нет,
буду иметь в виду на будущее

да, у автора 2017, эта вью доступна в 2016+
...
Рейтинг: 0 / 0
16.07.2019, 12:08
    #39837817
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций.
ничего не могу сказать по этому поводу,
т.к. не могу проверить, что выдает эта вьюха.
но если это все тот же sys.dm_os_wait_stats,
разделенный по сессиям, то вряд ли поможет.
надо ловить ожидания именно в тот момент, когда висит.

у меня висит джоб, который отлавливает все то,
где хоть какое-то ожидание длится более полминуты.
без разницы, какая сессия.
всех таких ловлю с планами для дальнейшего анализа.
а если использовать суммарную статистику по сессии,
то отловится туча всего хотя бы по CXPACKET,
но не отразит проблемы
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL 2017. Требуется помощь в обнаружении локов. В т.ч. в виде платных консультаций. / 25 сообщений из 48, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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