我们在某些 Windows 2003 32 位 TS 上遇到不稳定问题。
经过大量谷歌搜索后,我怀疑它用完了页表条目 (PTE)。
据我所知,这是在 Windows 32 位服务器上使用 /3gb 开关时的一个问题,而使用 TS' 你可以轻松达到极限。
您如何验证这就是正在发生的事情?我没有使用 perfmon 的经验,使用 Process Explorer 的经验有限,而且我真的不知道我在寻找什么。
更多信息: 发生这种情况时,任务管理器进程列表始终为空,内存计数器也为空白。发生这种情况时,服务器通常只有大约 65 个用户,但他们运行 MSO 和不同的会计软件。其中一些写得很糟糕而且臃肿。每个用户的常见内存使用量为 200-600 MB,但我们的服务器永远不会用完可用 RAM。服务器上安装了几台打印机,有时多达 20 台。几年前,服务器在 70-80 名用户的情况下运行平稳,但为了稳定用户而缩减了规模。
默认情况下,Windows Server 2003 x86 内核内存对于频繁使用的终端服务器而言配置严重不足。
要查看正在运行的系统上的实际使用值,您可以使用 SysInternal 的 Process Explorer,在 View > System Information 下。如果系统配置为使用最大数量的分页池和非分页池,分页限制将为 512 MB,非分页限制将为 256 MB。
要显示此级别的详细信息,必须在 Options > Configure Symbols 下加载正确的符号:
如果 Paged Physical 或 Nonpaged 接近极限,系统就会不稳定。配置这些最大限制的注册表值位于:
值得注意的是,拥有大量物理内存可能没有帮助,因为 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
32 位 TS 上的 70 到 80 个用户对我来说似乎很多。我们的规划数量一直是 50 到 65 个用户。服务器中有多少 RAM?
在 TS 上使用 /3GB 会导致性能和稳定性问题。我亲眼见过它。它从无法加载用户配置文件开始,并从那里迅速升级。我的建议是删除 /3GB 开关,看看它对性能和稳定性有什么影响。
您可以在我的文章Windows x64 – 大同小异,第 2 部分:内核内存,/3GB,PTE,(非)分页池中找到有关如何确定内核内存使用情况的说明。
简而言之,通过将 WinDbg 与 LiveKD 结合使用,您可以与本地计算机建立实时调试会话。从那里可以很容易地查询诸如免费 PTE、使用情况和(非)分页池的最大值。