如何找出是什么导致terminal服务器使用所有的内存?

我在集群环境中有4个terminal服务器(即Server1,Server2,Server3,Server4)。 由于某些原因,Server1总是使用其可用RAM的90-100%。 其他服务器平均占内存的40%左右。 用户总数约为每个服务器27个会话。

我怎么知道为什么一台服务器正在使用所有的RAM而不是另一台。 我预计RAM的使用会波动,因为一些用户可以使用更多的工具和资源。 但是,Server1在工作时间一直处于高峰期。

有一件事我注意到RDP到server1时,导航到“Windows任务pipe理器>性能>资源监视器”然后到“内存”选项卡上,我看到在Server1上运行chrome.exe的许多进程。 但是,在其他服务器上,即使所有用户使用chrome.exe来使用系统执行日常工作,我也没有看到相同的行为。

感觉这个服务器上的某个地方有错误的configuration。 据我所知,所有4terminal服务器应该有相同的设置“我没有configuration他们”,所以我不是100%“

这里是Server1的资源监视器的截图 Server1:资源监视器 Server1:任务pipe理器 Server1:任务管理器

这里是Server2的资源监视器的截图 Server2:资源监视器 Server2:任务pipe理器
Server2:任务管理器

在SERVER1的第一个屏幕中使用了3GB的RAM,并且还有更多的页面要滚动。 你有太多的东西,但是什么? 尝试使用以下CLI工具来总结其中一些数字。 你有一个坏的用户在做什么奇怪的事情吗? 你有很多用户正在运行的应用程序吗?

这会给你每个用户名的SessionID。 我仍然使用“query.exe”,不知道如何从WMI获得。
query user /server:SERVER1

这会给你一个由每个SessionID启动的proc数的小计(名字列是SessionID)。 是否有一个比其他更多的过程?
gwmi win32_process -comp SERVER1 | select name,workingsetsize,sessionid | group-object -prop sessionid | sort -desc count

按进程名称分小计,不pipe谁启动它。 你似乎有很多“InteractionClient.exe”的实例。 应该有那么多?
gwmi win32_process -comp SERVER1 | select name,workingsetsize,sessionid | group-object -prop name | sort -desc count

所选SessionID的WorkingSetSize小计。 用CMD2中的可疑SessionIDreplace99。 用CMD3中的可疑procNamereplaceInteractionClient。 我想通过sessionid分组来衡量object-sum,但是我不知道如何去做。
(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)语句来获得RAM小计。
gwmi win32_process -comp SERVER1 | select sessionid,name,workingsetsize | sort sessionid,name,workingsetsize