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

svchost.exe -k netsvcs, занимающий> 1 ГБ памяти

Я заметил, что мой рабочий сервер "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). Затем вы можете остановить / запустить службы и посмотреть, связана ли конкретная служба с освобождением / получением большого объема памяти. Он также сообщит вам, является ли это выделенной памятью «Рабочий набор» или «Частная (= в основном куча)». Если он привязан к определенной услуге, у вас будет более четкий путь для дальнейшего исследования.

Само собой разумеется, что вам нужно будет провести это тестирование в согласованном окне простоя / обслуживания или воспроизвести на тестовом сервере, поскольку вы будете прерывать нормальную работу. После завершения тестирования перезагрузите компьютер и проверьте, что список служб вернется к своему обычному состоянию.

Скриншот: