我们正在 Windows Server 2008 上使用远程桌面将应用程序作为远程应用程序运行,并且我们遇到的情况是(在大约 40 人登录后)服务器可能会冻结几秒钟(例如 20 秒)。
看起来问题不是由处理器不足或内存不足引起的。应用程序占用大量磁盘空间,但我们已将驱动器从 Raided SATA 更改为更快的 SSD 磁盘,但情况没有任何改善。
该应用程序是在 64 位环境和 8GB RAM 中运行的 32 位应用程序。
该应用程序在 Windows Server 2000 中的 RDP 上运行良好(最多 100 个用户)(尽管由于服务器内存不足,它开始变慢)
查看各种监视器,发现在发生冻结时处理器和网络使用率会达到峰值,不过这似乎与服务器解冻后的恢复更密切相关。
我们认为这可能与用户登录时卸载/加载 Hive 有关,但这只是猜测。
我的问题是... - 我如何找出可能导致此错误的原因? - 其他人遇到过类似的问题吗 - 以及您是如何解决的?
谢谢。
答案1
根据我的经验,死机可能是由以下原因之一引起的:
- 磁盘队列长度过长(即 I/O 数量超过硬盘的处理能力)
- 驱动程序和固件故障
- 网络流量非常大
- 内存或处理器利用率较高
请注意,这是从最有可能到最不可能的列表。I/O 经常是瓶颈。您可以使用性能监视器来诊断此问题。
答案2
我看过这个并问了一个相关的问题(如何诊断服务器暂时冻结)。
请看一下下面的文章。http://support.microsoft.com/kb/934330,它可能会有帮助,但我还是不知道到底发生了什么。
答案3
过去,我曾在环境的边缘运行大型终端服务器,以控制使用我们系统的人员的访问。从我使用 Windows 2000 终端服务器时,我们就遇到了这个问题。我发现问题是,当人们登录和退出时,它会“冻结”所有相关人员的服务器。随着越来越多的人使用服务器,“冻结”会变得更糟。
我总是将开销归咎于 Novell 的客户端 32,并最终使用旧的零管理工具包从用户登录会话中剥离功能,直到它们运行得尽可能精简。
后来,我有一个使用 2003 的终端服务器,没有 Novell,也遇到了同样的问题。我发现漫游配置文件是问题所在。当它试图通过网络加载新用户配置文件时,就会发生“冻结”......现在,当我们从家庭驱动器同步离线文件时,就会发生这种情况。
您如何修复它?
- 限制窗口的“漂亮”功能。
- 在这些类型的服务器上使用更多的缓存。
- 保持服务器碎片整理,尽管在 SSD 上并不总是建议这样做
- 保持服务器补丁
- 限制反病毒活动
- 不允许用户将数据本地存储到服务器
答案4
您的客户端是否在运行 Vista?我在性能非常强大的 Windows Server 2003 和 2008 机器上也遇到过类似的问题,它们几乎没有负载(当时只有我一个人在使用它们)。
事实证明,Vista 的 TCP/IP 堆栈有一些接收窗口优化,实际上导致某些路由器对 RDP 等应用程序的性能不佳。
以下一些文章解释了这个问题:
总而言之,试试这个:
netsh interface tcp set global autotuninglevel=disabled
如果这不是您的问题,您可以使用以下命令撤消它:
netsh interface tcp set global autotuninglevel=normal