Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Память используемая сессией / 25 сообщений из 28, страница 1 из 2
17.09.2019, 10:57
    #39862649
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Коллеги, привет.

Подскажите пожалуйста, как узнать сколько памяти используется каждой сессией.

Есть представление sys.dm_exec_query_memory_grants в котором есть информация о памяти по сессиям, но там нет сессий, которым была выделена память и они в ней больше не нуждаются.

Есть представление sys.dm_os_buffer_descriptors в котором страницы объектов в памяти.

Можно ли как-то выйти на сессии?

Проблематика: Иногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.

-----------
Андрей.
...
Рейтинг: 0 / 0
17.09.2019, 11:21
    #39862680
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
BelkinИногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.Память в основном используется буферным пулом, а его невозможно разделить на сессии (то есть, если в 2х сессиях делается запрос к одним и тем же страницам данных, то получается, что обе сессии используют одну и ту же память)
В sys.dm_exec_query_memory_grants показывается память именно для выполнения запроса, так что туда смотреть нужно, если у вас не хватает памяти, например, для сортировки.
...
Рейтинг: 0 / 0
17.09.2019, 11:37
    #39862700
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
alexeyvgBelkinИногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.Память в основном используется буферным пулом, а его невозможно разделить на сессии (то есть, если в 2х сессиях делается запрос к одним и тем же страницам данных, то получается, что обе сессии используют одну и ту же память)
В sys.dm_exec_query_memory_grants показывается память именно для выполнения запроса, так что туда смотреть нужно, если у вас не хватает памяти, например, для сортировки.

Спасибо за ответ. Про буферный пул понятно.
Что касается sys.dm_exec_query_memory_grants , то на странице https://technet.microsoft.com/ru-ru/ms365393(v=sql.15) написано " Возвращает сведения обо всех запросах, которые запросили и ожидающих предоставления памяти или были присвоены предоставления памяти. В этом представлении не будут отображены запросы, которые не нуждаются в предоставлении памяти. "
Получается, что есть запросы, которые выполняются, но в том представлении не будут фигурировать. И как тогда узнать, например, что именно на той сессии, что не отображена в представлении, расходуется больше всего памяти?
...
Рейтинг: 0 / 0
17.09.2019, 11:59
    #39862726
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
BelkinИ как тогда узнать, например, что именно на той сессии, что не отображена в представлении, расходуется больше всего памяти?
если запросу не нужна память, то он не может ее перерасходовать
...
Рейтинг: 0 / 0
17.09.2019, 12:05
    #39862737
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Эта view показывает запросы, которые уже получили память и выполняются.
Выполните этот запрос на своем сервере и все увидите сами:
Код: sql
1.
select * from sys.dm_exec_query_memory_grants
...
Рейтинг: 0 / 0
17.09.2019, 12:51
    #39862791
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
BelkinПроблематика: Иногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.Лучше бы показали оригинальное сообщение об ошибке.
...
Рейтинг: 0 / 0
17.09.2019, 12:53
    #39862794
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
BelkinИ как тогда узнать, например, что именно на той сессии, что не отображена в представлении, расходуется больше всего памяти?Вы же сами процитировали, что сессия расходует 0 памяти, и тогда она не отображается в представлении.
...
Рейтинг: 0 / 0
17.09.2019, 13:31
    #39862828
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
invmBelkinПроблематика: Иногда заканчивается память и необходимо понять, кто и каким запросом/сессией использует больше всего памяти.Лучше бы показали оригинальное сообщение об ошибке.
не покажет.
там наверняка все написано, просто кто-то не читатель.
например,

Error: 1204, Severity: 19, State: 4.
The instance of the SQL Server Database Engine cannot obtain a LOCK resource at this time.
Rerun your statement when there are fewer active users.
Ask the database administrator to check the lock and memory configuration for this instance, or to check for long-running transactions.
...
Рейтинг: 0 / 0
17.09.2019, 14:30
    #39862879
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
alexeyvgBelkinИ как тогда узнать, например, что именно на той сессии, что не отображена в представлении, расходуется больше всего памяти?Вы же сами процитировали, что сессия расходует 0 памяти, и тогда она не отображается в представлении.
Я как такового сообщения не наблюдал. Видел, что запросы выполнялись минутами вместо секунд.
При этом в sys.dm_os_memory я видел доступных пару сотен мегабайт памяти из 51Гб и сообщение "Available physical memory is high"
Нет, чуток обманываю, пару раз при запуске запроса сам ловил, что-то типа того, что невозможно распределить память.

"Не нуждаются в предоставлении памяти" - я понимаю это так, им уже предоставлено все, что они требовали.

Тогда объясните мне пожалуйста, что за объем памяти для сессий указан в sys.dm_exec_query_memory_grants ? Сумма по колонке granted_memory_kb дает 2ГБ (это память именно на расчеты?), при этом в sys.dm_os_memory доступно около 10ГБ из 51ГБ
...
Рейтинг: 0 / 0
17.09.2019, 14:49
    #39862897
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Belkin"Не нуждаются в предоставлении памяти" - я понимаю это так, им уже предоставлено все, что они требовали.

неправильно понимаете.
не нуждается, например, банальный селект из одной таблицы без сортировки.
зачем такому запросу memory grant?
у него ни соединений, ни сортировок.
читаешь и выплевываешь клиенту.
почитайте что ли Understanding SQL server memory grant
...
Рейтинг: 0 / 0
17.09.2019, 14:51
    #39862899
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
BelkinВидел, что запросы выполнялись минутами вместо секунд.

надо было смотреть ожидания.
может, ждал снятия блокировок.
может, ошибся в плане и пошел делать Nested Loops на миллионах строк.
тут вообще ни слова о памяти
...
Рейтинг: 0 / 0
17.09.2019, 15:42
    #39862925
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Yasha123BelkinВидел, что запросы выполнялись минутами вместо секунд.

надо было смотреть ожидания.
может, ждал снятия блокировок.
может, ошибся в плане и пошел делать Nested Loops на миллионах строк.
тут вообще ни слова о памяти

Проблема была с памятью!
Немного неверно написал в предыдущем сообщении
"При этом в sys.dm_os_memory я видел доступных пару сотен мегабайт памяти из 51Гб и сообщение "Available physical memory is LOW""
...
Рейтинг: 0 / 0
17.09.2019, 16:02
    #39862936
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Belkin"Не нуждаются в предоставлении памяти" - я понимаю это так, им уже предоставлено все, что они требовали.Нет, это значит, что им не нужна память для выполнения запроса.
...
Рейтинг: 0 / 0
17.09.2019, 16:03
    #39862937
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Belkin"При этом в sys.dm_os_memory я видел доступных пару сотен мегабайт памяти из 51Гб и сообщение "Available physical memory is LOW""Где сообщение, в sys.dm_os_memory, или на экране Windows?
...
Рейтинг: 0 / 0
17.09.2019, 16:21
    #39862951
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
alexeyvgBelkin"При этом в sys.dm_os_memory я видел доступных пару сотен мегабайт памяти из 51Гб и сообщение "Available physical memory is LOW""Где сообщение, в sys.dm_os_memory, или на экране Windows?
Сообщение, в sys.dm_os_memory
...
Рейтинг: 0 / 0
17.09.2019, 16:34
    #39862956
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Belkinalexeyvgпропущено...
Где сообщение, в sys.dm_os_memory, или на экране Windows?
Сообщение, в sys.dm_os_memory
виртуалочка?
у нас тоже было LOW,
когда виртуалка отгребала серверную память.
накажите системиста, выдайте серверной учетке LOCK PAGES IN MEMORY
...
Рейтинг: 0 / 0
17.09.2019, 16:42
    #39862962
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Yasha123Belkinпропущено...

Сообщение, в sys.dm_os_memory
виртуалочка?
у нас тоже было LOW,
когда виртуалка отгребала серверную память.
накажите системиста, выдайте серверной учетке LOCK PAGES IN MEMORYУгу, это не "нехватка памяти", а ненужная борьба за физическую память между приложениями через менеджер виртуальной памяти.
Нужно просто правильно настроить.
...
Рейтинг: 0 / 0
17.09.2019, 18:22
    #39863042
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
alexeyvgYasha123пропущено...

виртуалочка?
у нас тоже было LOW,
когда виртуалка отгребала серверную память.
накажите системиста, выдайте серверной учетке LOCK PAGES IN MEMORYУгу, это не "нехватка памяти", а ненужная борьба за физическую память между приложениями через менеджер виртуальной памяти.
Нужно просто правильно настроить.

Коллеги, спасибо за подсказки.
Что меня до сих пор не успокаивает, это то, что проблему решили перезагрузкой Агента SQL Server. Как такое может быть?
...
Рейтинг: 0 / 0
17.09.2019, 20:32
    #39863066
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
BelkinЧто меня до сих пор не успокаивает, это то, что проблему решили перезагрузкой Агента SQL Server. Как такое может быть?Возможно, он что то запускал, потребляющее память, и это "что то" зависло. Какой нибудь DTS пакет.
...
Рейтинг: 0 / 0
17.09.2019, 22:29
    #39863103
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Belkinalexeyvgпропущено...
Угу, это не "нехватка памяти", а ненужная борьба за физическую память между приложениями через менеджер виртуальной памяти.
Нужно просто правильно настроить.

Коллеги, спасибо за подсказки.
Что меня до сих пор не успокаивает, это то, что проблему решили перезагрузкой Агента SQL Server. Как такое может быть?Чтобы понять как такое может быть нужно сначала выяснить в чем реально была проблема, а вы пока что далеки от этого потому что у вас "Проблема была с памятью!". Вы посмотрели хоть на что-нибудь еще кроме sys.dm_os_memory? Cpu, ожидания, блокировки, нагрузку на диски... ?
...
Рейтинг: 0 / 0
18.09.2019, 09:58
    #39863163
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
BelkinПроблема была с памятью!
Если на недельку запустить профилер по Degree of Parallelism с фильтром по "Integer Data", например, в гигабайт, то, возможно, узнаете много интересного о потребителях памяти и почему помог перезапуск SQL Agent. А может, и не узнаете...
...
Рейтинг: 0 / 0
18.09.2019, 10:30
    #39863177
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
tunknownBelkinПроблема была с памятью!
Если на недельку запустить профилер по Degree of Parallelism с фильтром по "Integer Data", например, в гигабайт, то, возможно, узнаете много интересного о потребителях памяти и почему помог перезапуск SQL Agent. А может, и не узнаете...
ага, тогда и гадать не надо будет, кто же пожрал ресурсы сервера: тот самый профайлер
...
Рейтинг: 0 / 0
18.09.2019, 17:19
    #39863461
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Yasha123ага, тогда и гадать не надо будет, кто же пожрал ресурсы сервера: тот самый профайлерВы предполагаете, что у автора так много запросов на гигибайт, что профилер положит сервер? Ну, может быть...
...
Рейтинг: 0 / 0
18.09.2019, 18:57
    #39863525
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
Всем спасибо за подсказки!

Будем пробовать. Но дело в том, что у меня не так много прав, а к виртуалке нет вообще.
Но, как обычно, к сожалению, проблемой занимаются разработчики, а не админы...
...
Рейтинг: 0 / 0
18.09.2019, 19:08
    #39863535
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память используемая сессией
BelkinВсем спасибо за подсказки!

Будем пробовать. Но дело в том, что у меня не так много прав, а к виртуалке нет вообще.
Но, как обычно, к сожалению, проблемой занимаются разработчики, а не админы...Это же чисто админские вопросы. Разработчик без прав пишет код, и не лазит в sys.dm_os_buffer_descriptors. А DBA решает проблемы с сервером.

"как обычно" - это всё слова, никто не заставит разработчика без прав ставить винды и настраивать маршрутизатор, попутно ругаясь с провайдером. Нет прав - нет администрирования.

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


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