Доброго времени суток!
Далек от DBA, но приходится разбираться. Поиском пока не осилил.
Итак, переехали недавно с сервера SQL 2005 на 2016 Standard Edition (64-bit) на Windows Server 2016. Есть несколько тяжелых периодически выполняемых запросов (со времен 2005), которые нормально работали до и после переезда. Через пару месяцев после переезда запросы стали неожиданно зависать до бесконечности. Т.е. выполняются по нескольку часов без ошибок, пока их не убиваем. Раньше в пределах минуты или нескольких минут выполнялись. Легкие запросы продолжают нормально работать. Некоторое время помогала перезагрузка сервера. Сейчас - нет.
Пытаясь понять причину зависаний, пока проверил/сделал следующее (2016-й SQL):
1. SQL Server отжирает немного ресурсов у ОС. Task Manager показывает использование памяти 39% и проца 17% всеми процессами ОС суммарно.
2. Параметры управления памятью SQL Server:
min server memory = 0 MB
max server memory = 52000 MB
Это нормально, насколько понимаю, т.к. ОЗУ ОС = 64 GB.
Есть еще пара второстепенных (думаю) параметров:
память для создания индекса = 0
минимальный объем памяти для запроса = 1024 KB
3. Когда все висит, смотрю Активитити монитор и sys.dm_exec_sessions. И тут видно, что то сервер выделяет на запросы очень мало памяти, а именно:
max(memory_usage) = 4 (32 KB?)
sum(memory_usage) = 1073 (8584 KB?)
При этом доступной памяти у SQL Server ~22 GB (dm_os_process_memory.physical_memory_in_use_kb/1024 = ~22000), т.е. гораздо больше, чем съедают процессы.
4. Почистил процедурный кэш, но не помогло. Команды:
Где еще искать проблему? Или что пробовать делать (авось, поможет)?
P.S. Еще пару моментов:
1. SQL сервер запущен на локальной виртуалке. ОЗУ ОС = 64 GB вижу по RDP. Это ведь память вируталки?
2. Настроена репликация. Она продолжает нормально работать, данные на реплике обновляются.
Далек от DBA, но приходится разбираться. Поиском пока не осилил.
Итак, переехали недавно с сервера SQL 2005 на 2016 Standard Edition (64-bit) на Windows Server 2016. Есть несколько тяжелых периодически выполняемых запросов (со времен 2005), которые нормально работали до и после переезда. Через пару месяцев после переезда запросы стали неожиданно зависать до бесконечности. Т.е. выполняются по нескольку часов без ошибок, пока их не убиваем. Раньше в пределах минуты или нескольких минут выполнялись. Легкие запросы продолжают нормально работать. Некоторое время помогала перезагрузка сервера. Сейчас - нет.
Пытаясь понять причину зависаний, пока проверил/сделал следующее (2016-й SQL):
1. SQL Server отжирает немного ресурсов у ОС. Task Manager показывает использование памяти 39% и проца 17% всеми процессами ОС суммарно.
2. Параметры управления памятью SQL Server:
min server memory = 0 MB
max server memory = 52000 MB
Это нормально, насколько понимаю, т.к. ОЗУ ОС = 64 GB.
Есть еще пара второстепенных (думаю) параметров:
память для создания индекса = 0
минимальный объем памяти для запроса = 1024 KB
3. Когда все висит, смотрю Активитити монитор и sys.dm_exec_sessions. И тут видно, что то сервер выделяет на запросы очень мало памяти, а именно:
max(memory_usage) = 4 (32 KB?)
sum(memory_usage) = 1073 (8584 KB?)
При этом доступной памяти у SQL Server ~22 GB (dm_os_process_memory.physical_memory_in_use_kb/1024 = ~22000), т.е. гораздо больше, чем съедают процессы.
4. Почистил процедурный кэш, но не помогло. Команды:
DBCC FREEPROCCACHE ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE
Где еще искать проблему? Или что пробовать делать (авось, поможет)?
P.S. Еще пару моментов:
1. SQL сервер запущен на локальной виртуалке. ОЗУ ОС = 64 GB вижу по RDP. Это ведь память вируталки?
2. Настроена репликация. Она продолжает нормально работать, данные на реплике обновляются.