У меня есть 4 терминальных сервера (т.е. Server1, Server2, Server3, Server4) в кластерной среде. по какой-то причине Server1 всегда использует 90–100% доступной оперативной памяти. Остальные серверы используют в среднем около 40% своей оперативной памяти. Общее количество пользователей составляет около 27 сессий на сервер.
Как узнать, почему один сервер использует всю оперативную память, а другой нет? Я ожидаю, что использование ОЗУ будет колебаться, поскольку некоторые пользователи могут использовать больше инструментов и ресурсов. Однако Server1 постоянно достигает пика в рабочее время.
Одна вещь, которую я замечаю, когда RDP входит в server1 при переходе к «Диспетчеру задач Windows> Производительность> Монитор ресурсов». Затем на вкладке «Память» я вижу много процессов chrome.exe, запущенных на Server1. Однако на других серверах я не вижу такого же поведения, хотя все пользователи используют chrome.exe для использования системы для повседневной работы.
Такое ощущение, что где-то на этом сервере неправильная конфигурация. Насколько я знаю, все 4 терминальных сервера должны иметь одинаковую настройку «Я не настраивал их», поэтому я не на 100% »
вот скриншот Server1: Resource Monitor Сервер1: Диспетчер задач
А вот скриншот Server2: Resource Monitor Server2: Диспетчер задач
У вас есть 3 ГБ оперативной памяти, используемые на первом экране для SERVER1, и еще много его страниц для прокрутки. У тебя чего-то слишком много, но что? Попробуйте использовать следующие инструменты интерфейса командной строки, чтобы суммировать некоторые из этих цифр. У вас есть плохой пользователь, который делает что-то странное? У вас есть плохое приложение, которое запускают многие пользователи?
Это даст вам SessionID для каждого имени пользователя. Я до сих пор использую для этого "query.exe", не знаю, как получить из WMI.
query user /server:SERVER1
Это даст вам промежуточный итог для количества процессов, запущенных каждым SessionID (столбец имени - это SessionID). Есть ли сеанс со значительно большим количеством процедур, чем другие?
gwmi win32_process -comp SERVER1 | select name,workingsetsize,sessionid | group-object -prop sessionid | sort -desc count
Итого по имени процесса, независимо от того, кто его запустил. Похоже, у вас МНОГО экземпляров "InteractionClient.exe". Их должно быть так много?
gwmi win32_process -comp SERVER1 | select name,workingsetsize,sessionid | group-object -prop name | sort -desc count
Промежуточный итог WorkingSetSize для выбранного SessionID. Замените 99 подозрительными идентификаторами сеанса из CMD2. Замените InteractionClient подозрительными procNames из CMD3. Я хотел бы измерить-объект-сумму после группировки по идентификатору сеанса, но я не мог понять, как это сделать.
(gwmi win32_process -comp SERVER1 | where {$_.sessionid -eq 99} | measure-object workingsetsize -sum).sum/1mb
(gwmi win32_process -comp SERVER1 | where {$_.name -eq "InteractionClient.exe"} | measure-object workingsetsize -sum).sum/1mb
Большая таблица SessionID, ExeName, WorkingSetSize. Вы можете поместить это в Excel и получить промежуточные итоги ОЗУ, вручную вставив несколько операторов = SUM (A1: A99).
gwmi win32_process -comp SERVER1 | select sessionid,name,workingsetsize | sort sessionid,name,workingsetsize