Я заметил, что мой рабочий сервер "svchost.exe -k netsvcs" постоянно занимает> 1 ГБ оперативной памяти, что, на мой взгляд, немного избыточно.
Вот что даст мне список задач / svc для этого процесса:
Appinfo, CertPropSvc, gpsvc, IKEEXT,
iphlpsvc, LanmanServer, ProfSvc, Schedule,
SENS, SessionEnv, ShellHWDetection,
Winmgmt, wuauserv
Мне было интересно, какой может быть перечисленный процесс, ответственный за эту утечку памяти, и как это исправить. У кого-нибудь было такое же поведение в прошлом?
Сервер работает под управлением Windows Server 2008 R2 (сборка 7601: пакет обновления 1), и его основная функция - запускать внутренние процессоры приложений.
Выделение памяти очень дорого обходится ЦП по сравнению с повторным использованием существующей выделенной памяти. Часто, когда программа запускается, пока она не завершит свою функцию, она не «отпускает» эту память.
Например, Firefox какое-то время удерживает память. Если вы оставите свой компьютер включенным на неделю с открытым Firefox, вы заметите, что размер его памяти будет постоянно увеличиваться. После YouTube, музыки в Google Play и просмотра моя память достигает 2–4 ГБ, а после перезапуска процесса она уменьшается до 300 МБ. Это связано с его функциями кэширования, и такое поведение является преднамеренным.
Я склонен полагать, что процесс SVCHost работает именно так, как должен. Сколько сервисов работает на вашем сервере? 1 ГБ Звучит неважно, хотя это зависит от того, какие службы вы используете.
Вопрос в том, это утечка? Вы говорите, что использование памяти "стабильное".
Утечка = использование памяти увеличивается со временем, но никогда не уменьшается, поэтому вам придется время от времени перезагружать сервер.
Если таксы остаются на уровне ~ 1 ГБ в течение длительного времени (скажем, две недели), то ситуация совершенно нормальная. Современное программное обеспечение создано для использования свободной памяти, когда это необходимо, и я знаю несколько программ, которые просто захватят все, что есть, просто для экономии времени на выделение памяти.
Если это не мешает работе системы, не трогайте ее.
В качестве следующего шага, если вы хотите продолжить расследование, я бы установил проводник процессов (processxp.exe), который вы можете найти на сайте Microsoft. Это даст вам информацию о том, какие службы используют этот процесс (см. Снимок экрана с процессораproxp). Затем вы можете остановить / запустить службы и посмотреть, связана ли конкретная служба с освобождением / получением большого объема памяти. Он также сообщит вам, является ли это выделенной памятью «Рабочий набор» или «Частная (= в основном куча)». Если он привязан к определенной услуге, у вас будет более четкий путь для дальнейшего исследования.
Само собой разумеется, что вам нужно будет провести это тестирование в согласованном окне простоя / обслуживания или воспроизвести на тестовом сервере, поскольку вы будете прерывать нормальную работу. После завершения тестирования перезагрузите компьютер и проверьте, что список служб вернется к своему обычному состоянию.
Скриншот: