Windows Server 2008 R2 64-разрядная утечка памяти

12

У меня проблемы с одним из моих офисных серверов. Это виртуализированный сервер Windows 2008 R2 с 6 ГБ оперативной памяти. Он имеет только Microsoft SQL Server (память назначена максимум = 3 ГБ) и просто программное обеспечение, которое не использует более 1 ГБ ОЗУ. Однако оперативная память сервера почти заполнена, и, глядя на процессы в диспетчере задач, они, кажется, не суммируют это. Я установил RamMap, но не могу интерпретировать его очень легко, есть ли «высокая ценность», которую вы можете идентифицировать?

введите описание изображения здесь

Гильермо Зуби
источник
1
Сортировка по «Всего» или «Активному» сделала бы ответ довольно очевидным.
Дмитрий Григорьев

Ответы:

18

Ну, я вижу ~ 3,2 гигабайта памяти Driver Locked, которая сразу выделяется как подозрительная.

Этот тип памяти, Driver Locked memory, является памятью, которая была заблокирована драйвером режима ядра. Обычно для передачи небольших объемов данных, как правило, в течение коротких периодов времени.

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

Я собираюсь сделать дикое предположение здесь и предположить, что, поскольку вы упомянули, что это виртуализированный сервер, то, что это делает воздушный шар VMware, который делает это. У меня недостаточно данных, чтобы сказать вам, почему это происходит, но есть много случаев, и VMware поддерживает KB, как этот , которые конкретно говорят о том, что драйвер воздушного шара ошибочно удерживает большие объемы памяти, когда это не нужно. т быть

Вы также должны учитывать возможность того, что драйвер всплывающего окна ведет себя так, как задумано, и он пытается освободить страницу вашего сервера из памяти, потому что ему крайне необходимо выделить память другой виртуальной машине на том же хосте.

Есть еще одна возможность, что это вовсе не драйвер динамической памяти гипервизора, а просто какой-то неконтролируемый драйвер устройства.

Драйверы обычно выделяют память, которая «помечена» тэгом из 3 или 4 символов, который дает подсказку о том, какой драйвер был ответственным за распределение.
poolmon.exe, часть Windows SDK / DDK, может помочь в диагностике.

Как я уже сказал, дикое предположение, но это лучшее, что я могу сделать с имеющимися у меня данными.

Райан Райс
источник
16

Ну, у меня есть все мыслимые версии SQL Server локально, с 2005 по 2016 год, и я не видел таких утечек памяти, которые были бы такими большими, как 100% фактически используемых mem. Проверьте, включена ли динамическая память для вашей виртуальной машины .

Driver Lockedэто фигура, на которой вы должны сосредоточиться. В вашем конкретном случае это, Driver Lockedвероятно, один из драйверов Hyper-V, который заблокировал всю неиспользуемую память (назначенную виртуальной машине, но не используемую ею atm), так что он может «отдать ее» другой виртуальной машине, настроенной на использование динамической памяти, или даже ОС хоста, в зависимости от того, что нужно в данный момент. Вы можете проверить это, открыв в этой виртуальной машине несколько больших файлов или приложений с интенсивным использованием памяти - объем памяти DriverLocked должен уменьшиться по мере увеличения некоторых других показателей. ИМХО, это не должно быть поводом для беспокойства, если вы не слишком выделяете слишком много памяти для всех виртуальных машин.

Kitet
источник
5
Я побил тебя примерно на 8 секунд ... добро пожаловать в сбой сервера. :)
Райан Райс
Вы действительно :-)
Китет