Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Что означает поле memory_usage в sys.dm_exec_sessions  [new]
memory_usage
Guest
Доброго времени суток.

Подскажите, плз, что означает сабжевое поле?
Определение MSDN "Number of 8-KB pages of memory used by this session" как-то не очень помогает понять, что именно в этой цифре учитывается и как бороться с ее ростом.

Регулярно наблюдаю для некоторых сессий достаточно высокие значения в этом поле, порядка 500 МБ. Предположительно (пара экспериментов), отстрел таких сессий помогает при появившихся проблемах с производительностью. Если значение memory_usage - это память, используемая только этой сессией - это для нашего сервера слишком много и нужно разбираться, что туда входит и как уменьшить. Если это что-то вроде "общий объем buffer cache, к которому сессия последнее время обращалась" - можно забить и искать проблему в другом месте.

Заранее спасибо!

ЗЫ: Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
15 апр 16, 22:19    [19064770]     Ответить | Цитировать Сообщить модератору
 Re: Что означает поле memory_usage в sys.dm_exec_sessions  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
memory_usage,
Похоже на утечку памяти в клиентском драйвере. Типа такого: https://support.microsoft.com/en-ca/kb/2422010

Что вернет?
select *
FROM sys.dm_os_performance_counters 
WHERE counter_name = 'Connection Memory (KB)'

SELECT 
  host_name,
  program_name,
  client_interface_name,
  client_version,
  [memory_usage KB] = CAST(SUM(memory_usage) * 8 AS DECIMAL(20, 2)),
  COUNT(*)
FROM sys.dm_exec_sessions
WHERE session_id > 50
GROUP BY host_name, program_name, client_interface_name, client_version
ORDER BY [memory_usage KB] DESC


Попробуйте обновить драйвера на килентах.
16 апр 16, 00:39    [19065278]     Ответить | Цитировать Сообщить модератору
 Re: Что означает поле memory_usage в sys.dm_exec_sessions  [new]
memory_usage
Guest
Mind,

спасибо, тоже копаем в эту сторону.

Connection Memory (KB) - 2.7 ГБ на проблемном энвайронменте, 50 МБ - на безпроблемном. Разница между ними - на проблемном используется connection pool для работы tomcat с сессиями, т.е. сессии живут долго. На безпроблемном - не используется, сессии постоянно переоткрываются.

Сейчас пробуем откатить JDBC-драйвер на сервере приложений с 4.2. на 4.1 по следам вот этого обсуждения:
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8a4bae05-65a6-4725-aebe-c458a02da454/microsoft-jdbc-driver-42-6-prepared-statements-with-only-a-single-query-leak-memory-on-server?forum=sqldataaccess

Будут результаты - обязательно отпишусь.
16 апр 16, 00:51    [19065309]     Ответить | Цитировать Сообщить модератору
 Re: Что означает поле memory_usage в sys.dm_exec_sessions  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
memory_usage
Connection Memory (KB) - 2.7 ГБ на проблемном энвайронмент
Это однозначно не нормально.
16 апр 16, 01:19    [19065386]     Ответить | Цитировать Сообщить модератору
 Re: Что означает поле memory_usage в sys.dm_exec_sessions  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
memory_usage,

у вас RTM версия, поставьте по крайней мере SP1, может проблема решена.
18 апр 16, 10:11    [19070430]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить