Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Большое кол-во RESOURCE_SEMAPHORE  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Доброго времени суток!

СУБД: Microsoft SQL Server 2005 - 9.00.5000.00 (X64) Dec 10 2010 10:38:40 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)

В определенный момент начинает резко расти(в 5-10 раз) очередь процессов причем почти все процессы с типом ожидания RESOURCE_SEMAPHORE

Из мануала:
RESOURCE_SEMAPHORE - Имеет место в случае, когда запрос памяти из очереди не может быть выполнен немедленно из-за других параллельных запросов. Высокие значения ожиданий и времени ожидания могут указывать на чрезмерное количество параллельных запросов или чрезмерные объемы запрашиваемой памяти.

Как диагностировать проблему?
29 май 13, 13:03    [14364248]     Ответить | Цитировать Сообщить модератору
 Re: Большое кол-во RESOURCE_SEMAPHORE  [new]
Гость11111
Guest
это означает, что под выполнение запроса не может быть зарезервировано нужное количество памяти. скорее всего какой-то запрос уже отъедает много памяти - можешь использовать sys.dm_exec_query_memory_grants , чтобы посмотреть кто сжирает больше всего
29 май 13, 13:14    [14364314]     Ответить | Цитировать Сообщить модератору
 Re: Большое кол-во RESOURCE_SEMAPHORE  [new]
Гость333
Member

Откуда:
Сообщений: 3683
andrew shalaev
В определенный момент начинает резко расти(в 5-10 раз) очередь процессов причем почти все процессы с типом ожидания RESOURCE_SEMAPHORE

Видел такое, когда у неких часто используемых запросов полетели планы выполнения, и они стали просить много памяти под операции хэша и/или сортировки. Насколько я помню, запросы перекомпилировали с нормальными планами, повисшие сессии прибили.
29 май 13, 13:21    [14364349]     Ответить | Цитировать Сообщить модератору
 Re: Большое кол-во RESOURCE_SEMAPHORE  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Спасибо, при следующем подобном случае посмотрю.
29 май 13, 14:14    [14364698]     Ответить | Цитировать Сообщить модератору
 Re: Большое кол-во RESOURCE_SEMAPHORE  [new]
_Ultimate
Guest
andrew shalaev,

Мне в свое время очень помогла идентифицировать плохой запрос статья
http://www.mssqltips.com/sqlservertip/2827/troubleshooting-sql-server-resourcesemaphore-waittype-memory-issues/

Как выше уже написали - причина была в плохом плане.
29 май 13, 15:21    [14365175]     Ответить | Цитировать Сообщить модератору
 Re: Большое кол-во RESOURCE_SEMAPHORE  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
andrew shalaev,

Проблемные запросы можно идентифицировать посмотрев на granted_query_memory в sys.dm_exec_requests.

Еще посмотрите те запросы которые забрали на себя память и уже выполняются, чего они ждут? Может перекачки данных по сети? Потому что пока эти запросы не отвалятся память они не отдадут.

Ну и как уже посоветовали, искать в чем причина такого потребления памяти. Еще есть способы искуственно ограничить память для конкретных запросов через TOP(@TOP) и OPTIMIZE FOR(@TOP) хинт, но это в крайних случаях ибо можно нарваться на большие проблемы с произвоодительностью.

Если бы это был 2008, то помог бы Resource Governor. Можно еще поиграть с параметром query wait, но может быть чревато.
29 май 13, 20:08    [14366689]     Ответить | Цитировать Сообщить модератору
 Re: Большое кол-во RESOURCE_SEMAPHORE  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Апну тему, заметил что большое кол-во процессов с типом ожидания RESOURCE_SEMAPHORE, делают insert into #tmp, может у меня какие проблемы с tempdb?
На данный момент размер tempdb 65Гб(из них 30 свободно), состоит из 8- ми файлов, автоприрост файлов - 64 мб, автоприрост лог файла tempdb - 32Мб ограничений по размеру нет.
5 июн 13, 10:57    [14392965]     Ответить | Цитировать Сообщить модератору
 Re: Большое кол-во RESOURCE_SEMAPHORE  [new]
Гость333
Member

Откуда:
Сообщений: 3683
andrew shalaev
большое кол-во процессов с типом ожидания RESOURCE_SEMAPHORE, делают insert into #tmp

Планы запросов смотрели?
5 июн 13, 11:55    [14393387]     Ответить | Цитировать Сообщить модератору
 Re: Большое кол-во RESOURCE_SEMAPHORE  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Гость333
Планы запросов смотрели?


Каких именно запросов? если вы имеете ввиду
 insert into #tmp...


То у них планы нормальные, наиболее большое время занимает сик по индексам таблиц по которым идет выборка и потом данные пишутся во времянку.

Если Вы имеете ввиду другие запросы, которые не могут получить необходимую им память для выполнения, то их как правило довольно много порядка 70 запросов. На данный момент я думаю, что имеет место нехватка оперативной памяти.

Но все таки можно отследить закономерность что, многие висят на встаке данных во времянку, это меня озадачивает.
5 июн 13, 12:37    [14393774]     Ответить | Цитировать Сообщить модератору
 Re: Большое кол-во RESOURCE_SEMAPHORE  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
andrew shalaev
То у них планы нормальные, наиболее большое время занимает сик по индексам таблиц по которым идет выборка и потом данные пишутся во времянку.
Время которое в процентах чтоли? Так это не время. Да и при чем тут время, если у вас проблема с памятью? Надо смотреть сколько помяти используется, seek как раз таки вообще значения не имеет, надо смотреть на Hash/Sort и количество данных.

andrew shalaev
Если Вы имеете ввиду другие запросы, которые не могут получить необходимую им память для выполнения
А разве это не те же самые которые висят с RESOURCE_SEMAPHORE?
andrew shalaev
Но все таки можно отследить закономерность что, многие висят на встаке данных во времянку, это меня озадачивает.
Так какие именно запросы? Которые уже получили необходимую память и медленно встявляют в tempdb? Или которые висят с ожиданиями RESOURCE_SEMAPHORE? Если вторые, то между RESOURCE_SEMAPHORE и "into #tmp" скорее всего никакой связи нет.

Вы уже посмотрели информацию, о том, сколько под каждый выполняемый запрос выделяется памяти? И сколько ожидаемые запросы хотят получить памяти для выполнения?
5 июн 13, 19:44    [14396711]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить