Назад | Перейти на главную страницу

Как я могу узнать, что использует оперативную память на сервере?

Я имею дело с 32-битным сервером Windows 2003, который когда-то был физическим ящиком, но теперь виртуализирован в vmware. Есть два запущенных экземпляра SQL Server. Один - 2000 Standard, другой - 2008 R2 Express. Предполагается, что машине выделено 3 ГБ ОЗУ, но экземпляры SQL-сервера, похоже, используют очень мало ОЗУ. Если объединить все процессы, то получится около 500 МБ используемой оперативной памяти. Но похоже, что и доступной физической памяти не так много. Возникает вопрос: как узнать, что использует оперативную память?

Для экземпляра SQL 2008 попробуйте запустить этот код:

-- server wide info
select 
-- sp_configure
    (select value_in_use from sys.configurations where configuration_id = 1543) as 'Min Mem',
    (select value_in_use from sys.configurations where configuration_id = 1544) as 'Max Mem',
-- buffer pool & plan cache
    (select cast(count(*) * 8.0 / 1024.0 as numeric(10,2)) from sys.dm_os_buffer_descriptors) as 'Buffer Pool MB', 
    (select cast(sum(cast(size_in_bytes as bigint)) / 1024.0 / 1024.0 as numeric(10,2)) from sys.dm_exec_cached_plans) as 'Plan Cache MB',
-- perfmon
    (select cntr_value from sys.dm_os_performance_counters where object_name like '%Buffer Manager%' and counter_name = 'Page Life Expectancy') as 'PLE',
    (select cntr_value from sys.dm_os_performance_counters where object_name like '%Memory Manager%' and counter_name = 'Memory Grants Pending') as 'MGP'
go

Это скажет вам ваш Максимум и Мин. настройки для Память SQL Server, и он сообщит вам, сколько из них используется для Буферный пул и Кэш плана. Ожидаемая продолжительность жизни страницы как долго данные остаются в памяти, чем дольше, тем лучше. Ожидаемые гранты памяти сколько запросов застряло в ожидании в памяти, чем меньше, тем лучше.

На Диспетчер задач, щелкните вкладку «Процессы» и установите флажок «Показать процессы от всех пользователей». Затем щелкните столбец Память для сортировки по использованию памяти. Посмотрите, есть ли какие-нибудь другие программы, пожирающие вашу память.

Загрузите SysInternals инструменты и бег Обозреватель процессов, procxp.exe. Это даст более подробную информацию, чем диспетчер задач.

Поскольку это виртуальная машина, возьмите Администратор ВМ и проверьте следующее: Бронирование, Пределы, и Полеты на воздушном шаре. Вы хотите, чтобы Reservation равнялось объему памяти, который, по вашему мнению, установлен для сервера. Вы хотите, чтобы Limit и Ballooning были равны нулю.

Хорошей охоты!