Вы находитесь на странице: 1из 4

Наблюдение за использованием памяти

Применимо к:  SQL Server (все поддерживаемые версии)

Проводите периодический мониторинг экземпляра SQL Server для подтверждения того,


что память используется в допустимых пределах.

Настройка максимального размера памяти


для SQL Server
По умолчанию экземпляр SQL Server может со временем использовать большую часть
памяти, доступной операционной системе Windows на сервере. После занятия памяти она
не высвобождается, пока не будет обнаружена нехватка памяти. Такое поведение является
нормальным и не свидетельствует об утечке памяти в процессе SQL Server. Чтобы
ограничить объем памяти, который сервер SQL Server может использовать в своих целях,
задайте параметр max server memory. Дополнительные сведения см. в
статье Руководство по архитектуре управления памятью.

В SQL Server на Linux установить ограничение памяти можно с помощью средства mssql-


conf и параметра memory.memorylimitmb.

Наблюдение за памятью операционной системы


Для отслеживания нехватки памяти используйте приведенные ниже счетчики
Windows. Значения многих счетчиков памяти операционной системы можно запрашивать
с помощью динамических административных
представлений sys.dm_os_process_memory и sys.dm_os_sys_memory.

 Память: доступно байтов


Этот счетчик указывает на то, сколько байт памяти доступно на данный момент для
использования процессами. Низкие значения счетчика Доступно байтов могут
указывать на общую нехватку памяти операционной системы. Это значение можно
запросить с помощью T-SQL
из sys.dm_os_sys_memory.available_physical_memory_kb.
 Память: страниц/с
Этот счетчик показывает число страниц, которые были или получены с диска из-за
ошибок страниц физической памяти, или записаны на диск для освобождения
пространства в рабочем множестве из-за ошибок страниц. Большое значение
счетчика Страниц/с может означать излишнюю подкачку.
 Память: ошибок страницы/с Этот счетчик показывает частоту ошибок страниц
для всех процессов, включая системные. Низкий, но не нулевой уровень выгрузки на
диск (и вызванные ею ошибки страниц) является нормальным, даже если у
компьютера достаточно большое количество доступной памяти. Диспетчер
виртуальной памяти (VMM) Microsoft Windows берет страницы из SQL Server и
других процессов по мере того, как он урезает размеры рабочих множеств этих
процессов. Деятельность VMM может привести к ошибкам страниц.
 Процесс: ошибок страницы/с Этот счетчик показывает частоту ошибок страниц
для определенного пользовательского процесса. С помощью счетчика Процесс:
ошибок страниц/с можно определить, вызвана ли повышенная активность диска
подкачкой, выполняемой сервером SQL Server. Чтобы определить, является
ли SQL Server или другой процесс причиной излишней подкачки, наблюдайте за
счетчиком Процесс: ошибок страниц/с для экземпляра процесса SQL Server.

Дополнительные сведения об устранении проблемы излишней подкачки см. в


документации по операционной системе.

Изоляция памяти, используемой SQL Server


Для мониторинга использования памяти сервером SQL Server используйте приведенные
ниже счетчики объектов SQL Server. Значения многих счетчиков объектов SQL Server
можно запрашивать с помощью динамических административных
представлений sys.dm_os_performance_counters и sys.dm_os_process_memory.

По умолчанию сервер SQL Server управляет требованиями к памяти динамически исходя


из доступных ресурсов системы. Если SQL Server нужно больше памяти, он производит
запрос к операционной системе, чтобы определить, доступна ли свободная физическая
память, и использует ее. Если в операционной системе недостаточно свободной
памяти, SQL Server будет освобождать память для операционной системы до тех пор, пока
нехватка памяти не будет устранена или пока SQL Server не достигнет предела min server
memory. Однако можно отказаться от динамического использования памяти, задав
значения для параметров конфигурации сервера min server memory и max server
memory. Дополнительные сведения см. в разделе Параметры памяти сервера.

Для мониторинга объема памяти, используемого SQL Server , наблюдайте за следующими


счетчиками производительности.

 SQL Server: Memory Manager: общая память сервера (КБ)


Этот счетчик показывает объем памяти операционной системы, выделенной в
настоящее время серверу SQL Server диспетчером памяти SQL Server. Данное
значение, как правило, увеличивается при повышении активности и растет после
запуска SQL Server. Получить этот счетчик можно из
столбца committed_kb динамического административного
представления sys.dm_os_sys_info.
 SQL Server: Memory Manager: память целевого сервера (КБ)
Этот счетчик показывает идеальный объем памяти для SQL Server в соответствии с
рабочей нагрузкой за последнее время. Чтобы определить, выделен ли для
сервера SQL Server оптимальный объем памяти, сравните это значение со
счетчиком Общая память сервера по истечении некоторого периода работы со
стандартной нагрузкой. Значения счетчиков Общая память сервера и Память
целевого сервера должны быть примерно равны. Если значение Общая память
сервера значительно меньше, чем значение Память целевого сервера, возможно,
экземпляру SQL Server не хватает памяти. Через некоторое время после
запуска SQL Server значение Общая память сервера возрастает. При этом
значение Память целевого сервера должно быть больше, чем Общая память
сервера. Получить этот счетчик можно из
столбца committed_target_kb динамического административного
представления sys.dm_os_sys_info. Дополнительные сведения и рекомендации по
настройке памяти см. в статье Параметры конфигурации памяти сервера.
 Процесс: рабочий набор
Этот счетчик показывает объем физической памяти, используемой процессом в
настоящее время, согласно данным операционной системы. Обратите внимание на
экземпляр этого счетчика для sqlservr.exe. Получить этот счетчик можно из
столбца physical_memory_in_use_kb динамического административного
представления sys.dm_os_process_memory.
 Процесс: байт исключительного пользования
Этот счетчик показывает объем памяти операционной системы, запрошенный
процессом для использования в собственных целях. Обратите внимание на
экземпляр этого счетчика для sqlservr.exe. Так как этот счетчик учитывает все
выделения памяти, запрошенные процессом sqlservr.exe, включая выходящие за
пределы max server memory, его значение может превышать
значение параметра max server memory.
 SQL Server: Buffer Manager: страниц базы данных
Этот счетчик указывает число страниц с содержимым базы данных в буферном
пуле. Память, не относящаяся к буферному пулу процесса SQL Server, не
учитывается. Запросить этот счетчик можно из динамического административного
представления sys.dm_os_performance_counters.
 SQL Server: Buffer Manager: коэффициент попаданий в буферный кэш
Этот счетчик относится только к SQL Server. Желательно, чтобы коэффициент был
не меньше 90. Значение выше 90 указывает на то, что более 90 процентов всех
запрошенных данных были получены из кэша данных в памяти без считывания с
диска. Дополнительные сведения о диспетчере буферов SQL Server см. в
статье SQL Server, объект Buffer Manager. Запросить этот счетчик можно из
динамического административного представления sys.dm_os_performance_counters.
 SQL Server: Buffer Manager: ожидаемое время существования страницы
Этот счетчик измеряет, сколько секунд самая старая страница находится в буферном
пуле. Для систем с архитектурой NUMA это среднее значение для всех узлов
NUMA. Чем больше это значение, тем лучше. Его резкое падение указывает на
постоянное обновление данных в буферном пуле, из-за которого рабочая нагрузка
недостаточно эффективно использует данные, уже находящиеся в памяти. У каждого
узла NUMA имеется собственный узел буферного пула. На серверах с несколькими
узлами NUMA узнать ожидаемое время существования страницы для каждого узла
буферного пула можно с помощью счетчика SQL Server: узел буфера: ожидаемое
время существования страницы. Запросить этот счетчик можно из динамического
административного представления sys.dm_os_performance_counters.

Примеры
Определение текущего распределения памяти

Приведенные ниже запросы возвращают сведения о текущем распределении памяти.

Копировать
SELECT
(total_physical_memory_kb/1024) AS Total_OS_Memory_MB,
(available_physical_memory_kb/1024) AS Available_OS_Memory_MB
FROM sys.dm_os_sys_memory;

SELECT
(physical_memory_in_use_kb/1024) AS Memory_used_by_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_by_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;
Определение текущего объема памяти, используемого сервером SQL Server

Приведенный ниже запрос возвращает сведения о текущем использовании памяти


сервером SQL Server.

Копировать
SELECT
sqlserver_start_time,
(committed_kb/1024) AS Total_Server_Memory_MB,
(committed_target_kb/1024) AS Target_Server_Memory_MB
FROM sys.dm_os_sys_info;

Определение ожидаемого времени существования страницы

В приведенном ниже запросе с помощью


представления sys.dm_os_performance_counters отслеживается текущее
значение ожидаемого времени существования страницы для экземпляра SQL Server на
уровне как всего диспетчера буферов, так и каждого узла NUMA.

Копировать
SELECT
CASE instance_name WHEN '' THEN 'Overall' ELSE instance_name END AS NUMA_Node,
cntr_value AS PLE_s
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Page life expectancy';

Вам также может понравиться