У меня есть система Windows Server 2008 с 12 ГБ оперативной памяти.
Если я перечисляю все процессы в диспетчере задач и СУММ () память каждого процесса (рабочий набор, память (частный рабочий набор), размер фиксации, ...), я никогда не достигну больше, чем 4-5 ГБ это должно быть «в употреблении». Однако диспетчер задач сообщает, что на этом сервере 11 ГБ в использовании через вкладку «Производительность».
Я не могу определить, куда идет вся используемая оперативная память. Это не похоже на системный кеш, но я не могу быть уверен.
Это может быть утечка памяти в одном из устройств, но я не могу понять, какое именно. Память сервера продолжает заполняться и в конечном итоге заставляет нас перезагружать устройство, чтобы очистить его.
Я читал о том, как назначение RAM работает на Windows Server:
Но боюсь, что на данный момент я застрял без идей.
Управление памятью Windows - гигантская тема. Целые книги могут быть написаны и были написаны именно по этой теме. Первое, что я хотел бы сделать, это посмотреть серию видео «Тайны управления памятью Windows», части 1 и 2, на канале MSDN Channel 9:
http://channel9.msdn.com/Events/TechEd/Europe/2010/WCL401
http://channel9.msdn.com/Events/TechEd/Europe/2010/WCL402
(Есть североамериканская и европейская версии этой сессии, поскольку он выступал с докладами на TechEd в Америке и снова на TechEd Europe.)
Диспетчер задач и монитор ресурсов в порядке, и их достаточно для 99% пользователей Windows, но инструменты Sysinternals действительно великолепны, когда дело касается тех из нас, кто находится в последнем 1% и хочет увидеть как можно больше деталей.
Начните с RAMMap. Вы можете получить его на \\ live.sysinternals.com \ Tools \. Затем, чтобы лучше рассмотреть, как конкретный процесс использует память, используйте VMMap.
Давайте не будем сейчас пытаться определить, что означают все эти различные виды памяти. Ваша проблема в том, что вы боитесь утечки памяти. Ваш симптом заключается в том, что ваш сервер становится непригодным для использования из-за нехватки памяти, и вам приходится его перезагружать.
Вам никогда не нужно регулярно перезагружать сервер только после нормальной работы. В идеале это должна быть самоподдерживающаяся система, которую нужно перезагружать только после внесения исправлений и изменений конфигурации. Итак, да, я бы сказал, что у вас, вероятно, есть проблема, если вы перезагружаете свой сервер по уважительной причине, например, он действительно становится нестабильным / непригодным для использования. Не только потому, что диспетчер задач сообщает вам, что почти вся ваша оперативная память используется. Современные версии Windows агрессивно кэшируют вещи и отображают файлы и данные в ОЗУ, даже если вы не используете их прямо сейчас. Обратите внимание на разницу между «Свободной» памятью и «Доступной» памятью в диспетчере задач.
Однако я не уверен, что вы имеете в виду под «Это может быть утечка памяти в одном из устройств». Что вы имеете в виду под прибором? Я думал, мы говорим здесь о сервере Windows?
У вас может быть утечка памяти в нескольких разных типах памяти, таких как частная память процессов или общая память, или, возможно, даже память пула - выгружаемая или невыгружаемая. В любом из этих случаев используйте упомянутые мною инструменты и наблюдайте за этими различными категориями памяти на предмет процессов, которые продолжают увеличиваться в использовании памяти и никогда не прекращаются. Это было бы утечкой.
Надеюсь это поможет.
Диспетчер задач по умолчанию никогда не показывает фактическое полное использование памяти каждым процессом; но вы можете настроить отображение дополнительной информации, которая будет намного более точной.
Посмотреть здесь:
http://windows.microsoft.com/en-US/windows7/What-do-the-Task-Manager-memory-columns-mean