我的客户端具有在ESXi 5.1下运行的虚拟Server 2008 R2terminal服务器。
该服务器已经生产了大约4个月,对于login用户而言间歇性的缓慢/不响应。 发生此问题时, iexplore.exe进程(32位和64位)正在使用非常高的CPU和RAM。
屏幕截图:Windows任务pipe理器:“进程”选项卡 
截图(截图时间不同于第一截图):Windows任务pipe理器:“性能”选项卡 
(这两个截图是在不同的时间拍摄的)
有关如何永久解决此问题的任何想法?
我们有一些客户端使用的terminal服务器,但是这是我们在VMware下部署的第一个TS。 我们的其他terminal服务器在XenServer或物理上。 这可能是VMware的问题吗?
所以你告诉我,客户操作系统在相同的工作负载下,使用的是基于它所运行的虚拟机pipe理程序的显着不同的内存量。 我不认为我买那个…
我看到的一个明显的问题是,Internet Explorer显然是您的terminal服务器上使用率很高的应用程序,但是,您正在使用Internet Explorer的32位和64位实例。 这样做的问题在于,当多个会话启动相同的应用程序时,通常使terminal服务器受益的读/写存储器和其他共享内存技术是失去了这些优化技术; 它们不能在32位和64位版本之间共享。 如果您在32位或64位Internet Explorer上对所有用户进行了标准化,那么您的整体内存使用情况会更less。
运行一个应用程序
用户login后,会显示桌面(或处于单一应用程序模式下的应用程序)。 当用户select一个32位应用程序运行时,鼠标命令被传递给terminal服务器,terminal服务器将所选应用程序启动到新的虚拟内存空间(2 GB应用程序,2 GB内核)中。 尽可能在terminal服务器上的所有进程共享内核和用户模式的代码。 要实现进程之间的代码共享,Windows NT虚拟内存(VM)pipe理器使用写时复制页面保护。 当多个进程想要读取和写入相同的内存内容时,VMpipe理器会将写时复制页面保护分配给内存区域。 进程(会话)将使用相同的内存内容,直到执行写操作,此时VMpipe理器将把物理页框复制到另一个位置,更新进程的虚拟地址以指向新的页面位置,现在标记页面作为读/写。 写入时复制对terminal服务器上运行的应用程序非常有用和高效。
当一个进程(Session)将基于Win32的应用程序(如Microsoft Word)加载到物理内存中时,它将被标记为写入时复制(copy-on-write)。 当新进程(Sessions)也调用Word时,图像加载器将只将新进程(会话)指向现有的副本,因为应用程序已经加载到内存中。 当需要缓冲区和用户特定的数据(例如,保存到文件)时,必要的页面将被复制到新的物理内存位置,并被标记为单个进程(Session)的读/写。 VMpipe理器将保护这个内存空间不受其他进程的影响。 但是,大多数应用程序是可共享的代码,无论运行多less次,代码在物理内存中都只有一个实例。
>在terminal服务器环境中运行32位应用程序是可取的(尽pipe不是必需的)。 32位应用程序(Win32)将允许在多用户会话中共享代码并更高效地运行。 Windows NT通过为每个要执行的Win16应用程序创build一个基于MS-DOS的虚拟计算机(VDM),允许16位应用程序(Win16)在Win32环境中运行。 所有的16位输出被转换成Win32调用,执行必要的操作。 由于Win16应用程序在自己的VDM中执行,因此不能在多个会话中的应用程序之间共享代码。 Win16和Win32调用之间的转换也消耗系统资源。 在terminal服务器环境中运行Win16应用程序可能会消耗两倍的资源比相当于基于Win32的应用程序将。