Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
Добрый день! В пиковые нагрузки все отчеты MSRS резко начинают тупить. Просьба подсказать узкое место Статистика по ожиданиям, показывает на блокировки: http://prntscr.com/bizyxz Версия сервера: Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) Oct 20 2015 15:36:27 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor) в топе всегда висят процедуры репортинга PROCEDURE [dbo].[WriteLockSession] PROCEDURE dbo.[CreateChunkSegment] Историю логов почистил и поставил минимально (5 дней), не помогло. По прошлым разам - дедлоки и блокировки на таблице [ReportServerTempDB].dbo.SessionLock Хотя там есть и индексы и всего 300 записей таблица содержит cost threshold for parallelism для инстанса 25 |
21 июн 16, 10:44 [19317785] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
sys.dm_os_waiting_tasks покажите. на какие именно таблицы LCK_M_S и кто блокирует. кто-то ж в них пишет, раз другие прочесть не могут |
21 июн 16, 10:52 [19317815] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
o-o, так там результам второго запроса ,как раз по sys.dm_os_waiting_tasks второй грид таблица [ReportServerTempDB].dbo.SessionLock в топе всегда блокировок |
21 июн 16, 10:56 [19317835] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
так а зачем мне системные процессы, да еще и с не теми ожиданиями. у вас же с S-блокировками висят. а в деталях что? ни одного юзера, ни одного LCK_M_S ожидания |
21 июн 16, 10:59 [19317861] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
select 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 |
21 июн 16, 11:03 [19317883] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
o-o,select * FROM [sys].[dm_os_waiting_tasks] w INNER JOIN [sys].[dm_exec_sessions] s ON w.[session_id] = s.[session_id] INNER JOIN [sys].[dm_exec_requests] r ON s.[session_id] = r.[session_id] CROSS APPLY [sys].[dm_exec_sql_text](r.[plan_handle]) q CROSS APPLY [sys].[dm_exec_query_plan](r.[plan_handle]) p WHERE 1=1 and w.[session_id] > 50 http://prntscr.com/bj09cf http://prntscr.com/bj09j8 опять PROCEDURE [dbo].[CheckSessionLock] |
21 июн 16, 11:05 [19317897] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
причем эта процедура ( [dbo].[CheckSessionLock])индекс кластерный использует. не понимаю (( http://prntscr.com/bj09wy |
21 июн 16, 11:08 [19317915] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
у вас там одни пишут, другие читают, оттуда в топе ожидания блокиривки S и X. надо смотреть, на какие таблицы и кто. ну или может вам поможет RCSI или вынос репортистики отдельно |
21 июн 16, 11:09 [19317923] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
o-o,select 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 http://prntscr.com/bj0bud |
21 июн 16, 11:11 [19317936] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
o-o, >>или вынос репортистики отдельно уже. не помогло (( |
21 июн 16, 11:12 [19317944] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
connect: Blocking in SSRS ReportServer Database Status : Closed as Won't Fix |
21 июн 16, 11:14 [19317952] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
и не поможет. оно не на юзерских таблицах, это не ваши писатели/читатели. как вы и написали в первом посте
это косяк MS, см. линк выше |
||||
21 июн 16, 11:17 [19317977] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
o-o, ооо! вот, вроде похоже я правильно понял Please remove the update statement - so unnecesssary update is gone and blocking does not happen on heavy load. PROCEDURE WriteLockSession вот это закомментить? UPDATE [ReportServerTempDB].dbo.SessionLock WITH (ROWLOCK) SET SessionID = SessionID WHERE SessionID = @SessionID; |
21 июн 16, 11:21 [19318007] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
я чего-то не нахожу такое про update. вот еще ссылка по этому поводу: SSRS Blocking Processes товарищ говорит
разве что оптимизировать отчеты, чтобы долго не выполнялись |
||
21 июн 16, 11:31 [19318058] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
o-o, вот какого мазефака, проблема найденная еще в 2008Sp2 перекочевала в 2012Sp3? сделал, буду смотреть огромное спасибо в любом случае! мой гугл не столь велик )) |
21 июн 16, 11:32 [19318065] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
в этом направлении тоже уже выкопал что смог нужны архитектурые изменения, для дальнейшей оптимизации а так да - процедуры формируют набор даннных, не очень быстро но полдений мониторинг на проблемы самого репортинга показывал |
||
21 июн 16, 11:35 [19318082] Ответить | Цитировать Сообщить модератору |
buser Member Откуда: Санкт-Петербург Сообщений: 4537 |
StarikNavy, аргумент? |
21 июн 16, 11:41 [19318118] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
buser, спасибо. поизучаю. пока по другим задачам убежал |
21 июн 16, 11:46 [19318136] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |