Мониторинг потребления оперативной памяти SQL запросами
В какой-то момент мы обнаружили, что у нас на сервере выполняются SQL-запросы весом по 16 гигабайт. И не просто один, а пачка таких запросов, что поедало всю оперативку на сервере. С этим надо было как-то бороться, а для этого нужно мониторить сервер, чтобы отлавливать момент, когда они появляются. Для этой цели было написано приложение queryRAMconsumption.
Сразу скажу, что у нас MS SQL Server, потому всё делалось для него.
Описание
В чём суть приложения. Существует SQL-запрос, выдающий некоторую информацию по выполняющимся в данный момент на сервере запросам (и хранимым процедурам). Вот он:
SELECT TOP 1 requested_memory_kb / 1024, DB_NAME(st.dbid), text
FROM sys.dm_exec_query_memory_grants AS mg
CROSS APPLY sys.dm_exec_sql_text(mg.sql_handle) AS st
ORDER BY requested_memory_kb DESC
Приложение по таймеру выполняет этот запрос и записывает максимальное значение запрошенной оперативки в список. Если значение превысило некоторый лимит, который задаётся в .config
файле, то оно пометится соответствующей надписью, а сам запрос можно будет посмотреть во второй вкладке приложения - там будет указано время, когда запрос выполнялся, база данных (если удастся определить), а также первые несколько строк текста запроса.
Скриншоты приложения:
Для запуска мониторинга нужно указать значение интервала проверки в секундах и доменное имя SQL-сервера (IP тоже должен подойти).
По нажатию на F1
появляется окно справки.
Требования
Приложение тестировалось в Windows 8.1
, но должно работать в любой, главное чтобы был установлен .NET Framework 4.5.1
.
Настройки
В .config
файле есть некоторые настройки.
db_login
Логин для подключения к SQL-серверу.
db_password
Пароль для подключения к SQL-серверу.
defaultServer
Имя MS SQL сервера по умолчанию.
limit4query
Значение в мегабайтах, превышение которого будет считаться “тяжёлым” запросом.
Загрузить
Для запуска нужна только папка bin\Release
, остальное можете удалить. Из самой папки нужны только эти файлы:
queriesRAMconsumption.exe
queriesRAMconsumption.exe.config
Можете оставлять замечания/предложения на этой странице либо тут в каментах.
Social networks
Zuck: Just ask
Zuck: I have over 4,000 emails, pictures, addresses, SNS
smb: What? How'd you manage that one?
Zuck: People just submitted it.
Zuck: I don't know why.
Zuck: They "trust me"
Zuck: Dumb fucks