Я столкнулся со странной проблемой, когда 64-разрядная версия SQL Server 2016 Standard Edition, казалось, ограничивалась ровно половиной общей памяти, выделенной для него (64 ГБ из 128 ГБ).
Вывод @@VERSION
:
Microsoft SQL Server 2016 (SP1-CU7-GDR) (KB4057119) - 13.0.4466.4 (X64) 22 декабря 2017 г. 11:25:00 Авторское право (c) Microsoft Corporation Standard Edition (64-разрядная версия) в Windows Server 2012 R2 Datacenter 6.3 ( Сборка 9600:) (Гипервизор)
Вывод sys.dm_os_process_memory
:
Когда я запрос sys.dm_os_performance_counters
, я вижу , что Target Server Memory (KB)
находится 131072000
и Total Server Memory (KB)
это чуть меньше половины того , что у 65308016
. В большинстве сценариев я бы понял, что это нормальное поведение, поскольку SQL Server еще не определил, что ему нужно выделять дополнительную память для себя.
Тем не менее, он "застрял" на ~ 64 ГБ в течение более 2 месяцев. За это время мы выполнили значительное количество операций с интенсивной памятью над некоторыми базами данных и добавили к экземпляру еще около 40 баз данных. Мы работаем с 292 базами данных, каждый из которых имеет предварительно выделенные файлы данных по 4 ГБ со скоростью автоматического увеличения 256 МБ и файлы журнала 2 ГБ со скоростью автоматического роста 128 МБ. Я выполняю полное резервное копирование один раз каждую ночь в 12:00 и начинаю резервное копирование журнала транзакций с понедельника по пятницу, начиная с 6:00 до 20:00 с интервалом в каждые 15 минут. Эти базы данных имеют относительно низкую общую пропускную способность, но я скептически отношусь к тому, что что-то не так, учитывая, что SQL Server не подкрался кTarget Server Memory
Естественно, благодаря новым добавлениям в базу данных, нормальному выполнению запросов, а также выполненным конвейерам ETL с интенсивным объемом памяти.
Сам экземпляр SQL Server находится на виртуализированном (VMware) сервере Windows Server 2012R2 с 12 ЦП, 144 ГБ памяти (128 ГБ для SQL Server, 16 ГБ зарезервировано для Windows) и всего 4 виртуальных диска, которые расположены на vSAN с 15K SAS-дисками. , Windows естественно находится на диске C: 64 ГБ с файлом подкачки 32 ГБ. Файлы данных размещаются на диске размером 2 ТБ D: файлы журнала располагаются на диске размером 2 ТБ L, а база данных tempdb - на диске T: 256 ГБ с файлами 8x16 ГБ без автоматического увеличения.
Я проверил, что на сервере не запущены другие экземпляры SQL Server MSSQLSERVER
.
Этот сервер полностью выделен только для экземпляра SQL Server, поэтому на нем не запущены другие приложения или службы, которые могли бы потреблять память.
Я использую RedGate SQL Monitor для анализа, и ниже приводится история последних 18 дней Total Server Memory
. Как вы можете видеть, использование памяти оставалось полностью неизменным, за исключением одного увеличения в ~ 300 МБ в начале апреля.
Что может быть причиной этого? Что я могу посмотреть поближе, чтобы определить, почему SQL Server не хочет использовать дополнительные 64 ГБ + памяти, выделенной для него?
Выход работает sp_Blitz
:
sp_Blitz @OutputType = 'markdown', @CheckServerInfo = 1;
Приоритет 50: Производительность :
Планировщики ЦП в автономном режиме - некоторые ядра ЦП недоступны для SQL Server из-за проблем маскирования или лицензирования.
Узлы памяти в автономном режиме - из-за проблем с маскированием или лицензированием часть памяти может быть недоступна.
Приоритет 50: Надежность :
- Удаленный ЦАП отключен - удаленный доступ к выделенному административному соединению (DAC) не включен. ЦАП может значительно облегчить удаленное устранение неполадок, когда SQL Server не отвечает.
Приоритет 100: Производительность :
Множество планов для одного запроса - 300 планов присутствуют для одного запроса в кэше планов - это означает, что у нас, вероятно, есть проблемы с параметризацией.
Триггеры сервера включены
Триггер сервера [RG_SQLLighthouse_DDLTrigger] включен. Убедитесь, что вы понимаете, что делает этот триггер - чем меньше работы, тем лучше.
Триггер сервера [SSMSRemoteBlock] включен. Убедитесь, что вы понимаете, что делает этот триггер - чем меньше работы, тем лучше.
Приоритет 150: Производительность :
Запросы на принуждение к соединению - с момента перезапуска было зарегистрировано 1480 экземпляров подсказок к соединению. Это означает, что запросы управляют оптимизатором SQL Server, и если они не знают, что делают, это может принести больше вреда, чем пользы. Это также может объяснить, почему не работают настройки DBA.
Запросы Форсирование порядка подсказок - 2153 экземпляров порядка подсказок были записаны с момента перезапуска. Это означает, что запросы управляют оптимизатором SQL Server, и если они не знают, что делают, это может принести больше вреда, чем пользы. Это также может объяснить, почему не работают настройки DBA.
Приоритет 170: Конфигурация файла :
Системная база данных на диске C
master - база данных master содержит файл на диске C. Размещение системных баз данных на диске C сопряжено с риском сбоя сервера, когда ему не хватает места.
модель - база данных модели содержит файл на диске C. Размещение системных баз данных на диске C сопряжено с риском сбоя сервера, когда ему не хватает места.
msdb - в базе данных msdb есть файл на диске C. Размещение системных баз данных на диске C сопряжено с риском сбоя сервера, когда ему не хватает места.
Приоритет 200: Информационный :
Одновременные задания агента. Несколько заданий агента SQL Server настроены для одновременного запуска. Для получения подробной информации о расписании см. Запрос в URL.
Таблицы в главной базе данных мастера - таблица CommandLog в базе данных мастера была создана конечными пользователями 30 июля 2017 года в 17:22. Таблицы в базе данных master не могут быть восстановлены в случае аварии.
TraceFlag On
Флаг трассировки 1118 включен глобально.
Флаг трассировки 1222 включен глобально.
Флаг трассировки 2371 включен глобально.
Приоритет 200: Конфигурация сервера не по умолчанию :
Агент XP - эта опция sp_configure была изменена. Его значение по умолчанию 0, и оно было установлено в 1.
резервная контрольная сумма по умолчанию - эта опция sp_configure была изменена. Его значение по умолчанию 0, и оно было установлено в 1.
резервное сжатие по умолчанию - эта опция sp_configure была изменена. Его значение по умолчанию 0, и оно было установлено в 1.
порог стоимости для параллелизма - эта опция sp_configure была изменена. Его значение по умолчанию 5, и оно было установлено на 48.
максимальная степень параллелизма - эта опция sp_configure была изменена. Его значение по умолчанию равно 0, и оно было установлено на 12.
максимальная память сервера (МБ) - эта опция sp_configure была изменена. Его значение по умолчанию - 2147483647, и оно было установлено на 128000.
оптимизировать для специальных рабочих нагрузок - эта опция sp_configure была изменена. Его значение по умолчанию 0, и оно было установлено в 1.
показать дополнительные параметры - эта опция sp_configure была изменена. Его значение по умолчанию 0, и оно было установлено в 1.
xp_cmdshell - эта опция sp_configure была изменена. Его значение по умолчанию 0, и оно было установлено в 1.
Приоритет 200: Надежность :
Расширенные хранимые процедуры в мастере
master - расширенная хранимая процедура [sqbdata] находится в базе данных master. Возможно, используется CLR, и теперь база данных master должна быть частью вашего планирования резервного копирования / восстановления.
master - расширенная хранимая процедура [sqbdir] находится в базе данных master. Возможно, используется CLR, и теперь база данных master должна быть частью вашего планирования резервного копирования / восстановления.
master - расширенная хранимая процедура [sqbmemory] находится в базе данных master. Возможно, используется CLR, и теперь база данных master должна быть частью вашего планирования резервного копирования / восстановления.
master - расширенная хранимая процедура [sqbstatus] находится в базе данных master. Возможно, используется CLR, и теперь база данных master должна быть частью вашего планирования резервного копирования / восстановления.
master - расширенная хранимая процедура [sqbtest] находится в базе данных master. Возможно, используется CLR, и теперь база данных master должна быть частью вашего планирования резервного копирования / восстановления.
master - расширенная хранимая процедура [sqbtestcancel] находится в базе данных master. Возможно, используется CLR, и теперь база данных master должна быть частью вашего планирования резервного копирования / восстановления.
master - расширенная хранимая процедура [sqbteststatus] находится в базе данных master. Возможно, используется CLR, и теперь база данных master должна быть частью вашего планирования резервного копирования / восстановления.
master - расширенная хранимая процедура [sqbutility] находится в базе данных master. Возможно, используется CLR, и теперь база данных master должна быть частью вашего планирования резервного копирования / восстановления.
master - расширенная хранимая процедура [sqlbackup] находится в базе данных master. Возможно, используется CLR, и теперь база данных master должна быть частью вашего планирования резервного копирования / восстановления.
Приоритет 210: Конфигурация базы данных не по умолчанию :
Read Committed Snapshot Isolation Enabled - этот параметр базы данных не используется по умолчанию.
RedGate
RedGateMonitor
Включена изоляция моментальных снимков - этот параметр базы данных не используется по умолчанию.
RedGate
RedGateMonitor
Приоритет 240: Статистика ожидания :
- 1 - SOS_SCHEDULER_YIELD - 1770,8 часов ожидания, 115,9 минут среднего времени ожидания в час, 100,0% ожидания сигнала, 1419212079 задач ожидания, среднее время ожидания 4,5 мс.
Приоритет 250: Информационный :
- SQL Server работает под учетной записью NT Service - я работаю как NT Service \ MSSQLSERVER. Я хотел бы иметь учетную запись службы Active Directory вместо.
Приоритет 250: Информация о сервере :
Содержание трассировки по умолчанию - трассировка по умолчанию содержит 36 часов данных с 14 апреля 2018 г. по 23:21 и 16 апреля 2018 г. по 11:13. Файлы трассировки по умолчанию находятся в: C: \ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Log
Диск C Space - 196816,00MB бесплатно на диске C
Диск D Space - 894823.00MB бесплатно на диске E
Drive L Space - 1361367.00MB бесплатно на диске F
Drive T Space - 114441.00MB бесплатно на диске G
Аппаратное обеспечение - логические процессоры: 12. Физическая память: 144 ГБ.
Аппаратное обеспечение - NUMA Config
Узел: 0 Состояние: ONLINE Онлайн-планировщики: 4 Автономные планировщики: 2 Группа процессоров: 0 Узел памяти: 0 Память VAS Зарезервировано ГБ: 186
Узел: 1 Состояние: OFFLINE Сетевые планировщики: 0 Автономные планировщики: 6 Группа процессоров: 0 Узел памяти: 0 Память VAS Зарезервировано ГБ: 186
Мгновенная инициализация файла включена - учетная запись службы имеет разрешение на выполнение задач обслуживания томов.
План энергопотребления - Ваш сервер имеет процессоры с частотой 2,60 ГГц и находится в режиме сбалансированного энергопотребления - Э-э ... вы хотите, чтобы ваши процессоры работали на полной скорости, верно?
Последний перезапуск сервера - 9 марта 2018 г. 7:27
Имя сервера - [отредактировано]
Сервисы
Служба: SQL Server (MSSQLSERVER) работает под учетной записью службы NT Service \ MSSQLSERVER. Время последнего запуска: 9 марта 2018 7:27. Тип запуска: автоматический, в данный момент работает.
Служба: агент SQL Server (MSSQLSERVER) работает под учетной записью службы LocalSystem. Время последнего запуска: не показано. Тип запуска: автоматический, в данный момент работает.
Последний перезапуск SQL Server - 9 марта 2018 г. 6:27
Служба SQL Server - версия: 13.0.4466.4. Уровень патча: SP1. Накопительное обновление: CU7. Издание: Standard Edition (64-разрядное). Группы доступности включены: 0. Статус менеджера групп доступности: 2
Виртуальный сервер - Тип: (HYPERVISOR)
Версия для Windows - Вы используете довольно современную версию Windows: Server 2012R2 эпохи, версия 6.3
Приоритет 254: Рандат :
- Капитанский бревно: что-то и что-то ...
select @@version
и select * from sys.dm_os_process_memory
в вопрос. Вы пытались посмотреть на стоимость Total Server Memory (KB)
из счетчика perfmon?
Total Server Memory (KB)
был предоставлен от sys.dm_os_performance_counters
.