我们的一些 Windows 2003 32 位 TS 存在不稳定问题。
经过大量的 Google 搜索后,我怀疑它已经用完了页表条目 (PTE)。
据我所知,这是在 Windows 32 位服务器上使用 /3gb 开关时出现的问题,而使用 TS 很容易达到限制。
你如何验证这确实正在发生?我没有使用过 perfmon 的经验,对 Process Explorer 的经验也有限,我真的不知道自己在寻找什么。
更多信息: 发生这种情况时,任务管理器进程列表总是为空,内存计数器也为空。发生这种情况时,服务器通常只有大约 65 个用户,但他们运行 MSO 和不同的会计软件。其中一些软件编写得相当糟糕,而且臃肿不堪。每个用户的常见内存使用量为 200-600 MB,但我们的服务器从未用完可用 RAM。服务器上安装了一些打印机,有时多达 20 台。几年前,服务器在有 70-80 个用户的情况下运行顺畅,但已缩减规模,因为这似乎可以稳定服务器。
答案1
默认情况下,Windows Server 2003 x86 内核内存对于使用率很高的终端服务器而言配置严重不足。
要查看正在运行的系统上实际使用的值,可以使用 SysInternal 的 Process Explorer,在“查看”>“系统信息”下。如果系统配置为使用最大数量的分页池和非分页池,则分页限制将为 512 MB,非分页限制将为 256 MB。
为了显示此级别的详细信息,必须在“选项”>“配置符号”下加载适当的符号:
如果分页物理内存或非分页内存接近极限,系统就会不稳定。配置这些最大限制的注册表值位于:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"PagedPoolSize"=dword:FFFFFFFF
"SystemPages"=dword:FFFFFFFF
值得注意的是,拥有大量物理内存可能并没有什么用,因为 x86 Windows 只能使用相当小的内核内存空间,并且不能超出限制中显示的范围。(x64 内核内存限制的限制要少得多)。该限制是在系统启动时根据可用内存和注册表设置动态计算的。
您可以使用以下 Windows 调试器命令获取有关使用内核内存的更多详细信息:
!vm
- 显示类似于进程资源管理器内核内存限制的信息。
! poolused n
- 显示有关分页/非分页池使用情况的信息。如果驱动程序存在内存泄漏并消耗过多的内核内存,这有时会有所帮助。
!poolused 命令
http://msdn.microsoft.com/en-us/library/windows/hardware/ff564700%28v=vs.85%29.aspx
!vm 命令
http://msdn.microsoft.com/en-us/library/windows/hardware/ff565602%28v=vs.85%29.aspx
答案2
32 位 TS 上 70 到 80 个用户对我来说似乎很多。我们的计划数量一直是 50 到 65 个用户。服务器中有多少 RAM?
在 TS 上使用 /3GB 会导致性能和稳定性问题。我亲眼见过。它从无法加载用户配置文件开始,然后迅速升级。我的建议是删除 /3GB 开关,看看这对性能和稳定性有什么影响。
答案3
您可以在我的文章中找到有关如何确定内核内存使用情况的描述Windows x64 — 大同小异,第 2 部分:内核内存、/3GB、PTE、(非)分页池。
简而言之,通过将 WinDbg 与 LiveKD 结合使用,您可以与本地计算机建立实时调试会话。从那里可以轻松查询诸如空闲 PTE、使用情况和(非)分页池的最大值之类的信息。