2008 R2终端服务器:“系统资源不足,无法完成请求的服务”


21

我正在使用在vSphere环境中配置的运行状况不佳的Windows 2008 R2终端服务器。它目前具有4个vCPU和32GB RAM。没有过多的承诺。

最近几个月(约70个),该服务器上的并发用户数急剧增加,并且可能超过建议的水平。由于该系统上用户使用的应用程序,将其拆分为多个服务器将是超出此问题范围的挑战。

但是,在一周中的某些时候(现在,几乎每天),新用户登录会产生以下错误:事件ID 1500

Windows无法登录,因为无法加载您的配置文件。检查您是否已连接到网络,并且网络运行正常。

详细信息-系统资源不足,无法完成请求的服务。

这将一直保留到某些用户注销,手动断开会话或完全重新引导系统为止。

我想知道:

  • 该错误消息指的是什么资源?实际受到什么限制?
  • 是否有操作系统级别的可调参数或配置可以帮助您解决此问题?
  • 用户对性能感到满意,但此错误消息的频率增加了。这里还有别的东西吗?
  • 终端服务器可以容纳的用户数量是否有绝对限制?我看到某些终端服务器调整指南中描述了150多个用户。

在此处输入图片说明

在此处输入图片说明


这是你的问题吗?。我不能说我在Windows Server 2008 R2 Server 上经历过这种情况,但是我在2003年和2008年遇到了很多,所以也许它仍然适用。
HopelessN00b 2014年

@ HopelessN00b 在此环境中不会出现经常引用的事件ID 1508。我的大部分研究都使我找到了适合Windows 2003环境的解决方案,但也许我的Google技能现在已经关闭了……
ewwhite 2014年

这是针对2003年的,但您可能要看一下它是否相关:support.microsoft.com/kb/935649
ErikE 2014年

我检查了@ HopelessN00b RegistrySizeLimit,它没有定义。
ewwhite

1
@ErikE 在2008 R2中将忽略这些注册表项。
ewwhite

Answers:


16

这已经解决了。

我开始检查注册表,因为增加虚拟机上的CPU和RAM资源无法解决问题。

有人向我指出了Microsoft的dureg工具来估计注册表的大小。通过regedit浏览时,我在打开下的键时遇到问题HKEY_USERS\.Default\PRINTERS。使用dureg,我开始在该层次结构下进行探测。


打印机是问题所在。原因和修复方法在以下详细说明:
在基于Windows Server 2008 R2 SP1的服务器上,“ HKEY_USERS.DEFAULT”注册表配置单元的大小持续增加

修补程序:http : //support.microsoft.com/kb/2871131

这显然阻止了增长,但是需要压缩密钥和注册表以回收空间。

压缩肿的注册表:http : //support.microsoft.com/kb/2498915

1)  Boot from a WinPE disk.
2)  Open regedit while booted in WinPe, load the bloated hive under HLKM. (e.g. HKLM\Bloated)
3)  Once the bloated hive has been loaded, export the loaded hive as a "Registry Hive" file with a unique name.
4) Unload the bloated hive from regedit.
5) Rename the hives so that you will boot with the compressed hive.
e.g.
c:\windows\system32\config\ren software software.old
c:\windows\system32\config\ren compressedhive software

嗯,几个步骤...在生产时间内进行远程操作有点棘手。我试图联系我的驻地Microsoft专家来完成该任务,但是他正忙于在某处寻求一些SCCM或SCVMM问题。通过阅读一些与Citrix相关的论坛,我注意到了一个可以用较少的步骤即可完成上述操作的工具...

因此,我拍摄了一个虚拟机快照,然后下载并运行了免费的注册表压缩软件(Tweaking.com);尽管到处都有Microsoft系统工程师的集体gro吟声……

注意保存在默认配置中的1.4GB ... co

请重启!

重新启动后,一切都很好。用户数量达到86,没有不良影响,也没有与配置文件相关的错误。我已经监视了打印机注册表配置单元,它保持稳定。


禁用RDP打印机重定向是否可以防止这种情况发生?有时,客户会遇到可怕的打印驱动程序,这些打印驱动程序也会复制到他们的RDP服务器上。当然,对于终端服务器,您可能需要RDP打印机重定向...

1
@kce在此环境中,所有客户端都是瘦客户端,但可能只有2或3台PC。客户在TS上而不是GPO分布式打印机上安装本地打印机也可能存在问题,但是无论如何,此修补程序中提到的错误都是一个问题。
ewwhite 2014年

感谢您的诊断,修复程序和工具!我隐约记得这个问题曾经发生在我身上,但是随后发生了不相关的完全损坏,因此我只是重新安装了所有东西。如果将来我遇到类似的问题,我一定会在Evernote中加入书签。再次感谢!
pepoluan 2014年

对于记录,我也做了上面,它解决了,但我现在有另一个注册表腹胀面临:HKU\.DEFAULT\Software\Hewlett-PackardHKU\.DEFAULT\Software\Lexmark双方共同构成约默认的注册表文件的1.2GB!
ETL

3

在Windows Server 2003中,该错误是内核内存耗尽的结果。因为您正在使用Windows Server 2008 R2,所以我不确定问题的原因与W2K3中的原因有多密切的联系,但是我敢打赌,由于用户和进程数量的原因,这是内存问题。我将把非分页缓冲池内存耗尽视为可能的原因。另外,处理的数量几乎是800,这是相当高的。MS可能会告诉您减少进程数,这只能通过减少用户负载来完成。

本文提供了一些有关Windows中内存使用情况的良好信息,以及如何查看非页面缓冲池限制以查看是否是造成此问题的原因:

https://blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspx


2
800个进程太高?!?但是在Linux中... :(
ewwhite

在抱怨800个进程比Linux高时,请在进程监视器中添加“线程”列,然后查看其中有多少个... Linux和Windows中的进程是不同的鸟。比较它们对两种内核设计都是不公平的。
2014年

2

启动Windows性能监视器以监视各种计数器:

  • 上下文切换
  • 页表条目
  • GDI元素
  • 提手
  • …(无论您能找到什么)

并查看登录失败时是否出现这些高峰之一。

另外:某些原因导致系统上的内核CPU%高-您应该调查一下它是否导致相关问题。


用户配置文件配置单元清理服务可帮助在这里,因为它“有助于确保当用户注销用户会话完全终止”。


我可以添加更多vCPU吗?
ewwhite

增加更多的处理能力并不能解决内核使用率高的问题,只会掩盖它。而且,它不太可能直接导致登录失败。
MikeyB 2014年

我正在尝试
深入

UPHClean实用程序功能是通过w2k8及更高版本的User Profile Cleanup Service本机提供的。
ErikE 2014年

@ewwhite 这是一篇Microsoft文章,提到W2k3 TS服务器上的PTE耗尽。可能值得抛出一些性能计数器来检查这是否正在发生。
HopelessN00b

1

嗯,从我在Server 2008 R2中了解到的RDS容量规划的情况来看,您可能只是在资源不足(对于使用它的用户数量)不足的情况下运行可怜的终端服务器。特别是,我注意到您在4个vCPUS上有80个用户,MS建议每15个用户使用1个内核。

来自Technet博客,标题为RDS规模调整和容量规划指南

We always felt the need of Hardware capacity guidance and sizing information for Terminal Services or Remote Desktop services for Server 2008 R2, Whenever I am engaged in any architectural guidance discussion for RDS deployment i always get a question what needs to be taken into consideration while deciding the hardware configuration and to do capacity planning.

Here are some bullet points which I recommend to my partners and customers to consider:

  • 2GB内存(RAM)是CPU每个内核的最佳限制。例如,如果您有4 GB RAM,那么为了获得最佳性能,应该使用双核CPU。
  • 2双核CPU的性能优于单核四核处理器。
  • 建议30个用户的LAN和20个用户的WAN的带宽。带宽(b)=每秒100兆位(Mbps),延迟(l)小于5毫秒。
  • 在终端服务器上,GP的每个用户的理想内存(RAM)要求是64 MB仅用于+ 2 GB的OS Eg(100个用户* 64)+ 2000 = 8.4 GB,即8GB RAM。
  • 与每个用户64 MB的基本内存相比,使用更多的应用程序(即Office,CAD Apps等)将需要每个用户更多的内存来添加到此计算中。
  • 每个CPU内核15 TS会话是终端服务器的最佳性能限制。
  • 网络的跳数不得超过5,并且延迟应在100毫秒以下。
  • 每个用户会话的理想带宽为64 kbps。(256色,交换网络,仅位图缓存)
  • 如果每个内核的处理器时间百分比持续超过65%,则CPU性能将下降。
  • 在X64硬件和OS上运行时,终端服务器的性能翻倍。

In addition to that, Microsoft has just released a whitepaper on Capacity Planning in Windows Server 2008 R2.

在这里下载


1

我的时间很少,所以我只作一个粗略的答案,希望以后再充实一下。

当我在Citrix团队中进行拼写检查时,我记得我们曾尝试将每台服务器的用户数量提升到15-20,但是这些用户正在运行大量的应用程序。在x64的这些日子里,我们吸引了更多的用户,但听起来确实有70多个用户。

性能计数器最大化不会很少进行上下文切换,它会使服务器处于地板状态,而其他计数器(如RAM,CPU等)看起来不错。这可能是一个原因(由于上下文切换过多,服务器无法在超时之前分配资源)。这是监视上下文切换的两种方法

The System\Context Switches/sec counter in 
System Monitor reports systemwide context 
switches.

The Thread(_Total)\Context Switches/sec  
counter reports the total number of context 
switches generated per second by all threads.

另外,您可能会在容量规划指南中找到有用的东西,可以在此博客文章中找到指向它的链接。

当我可以花时间回答这个问题时,我会在此处添加一下内容,以提醒您注意vSphere虚拟机中所有基于时间的度量。

由于vCPU是如何从物理CPU中抽象出来的,因此vCPU不知道现在几点钟(一秒钟的虚拟时间可能比一秒钟的实际(或至少是物理时间)多或少。性能计数器(CPU时间,上下文切换/秒等)不准确(有时甚至如此),即使它们可能用作非常粗糙的指标。

要验证这一点,请将VM中的任何基于本地时间的CPU计数器与该VM的vSphere主机上的计数器进行比较。因此,VMware通过VMware工具在两个VMguest perfmon对象中发布了一些CPU计数器(以及从guest虚拟机角度来看也是不准确的内存)。

因此,只有在查看VMware发布的对象计数器时,才能在guest虚拟机性能中使用正确的基于时间的值。

我只是认为此基本信息有些相关,因为到目前为止的答案都集中在vSphere虚拟机中基于时间的测量上,在某些情况下,这是进行正确分析的关键情况。当然,它也直接涉及此特定(未完成)答案的主题及其评论。它可能对某人有用。

一旦有时间,我将编辑指向白皮书等内容的链接,并详细说明计数器的路径\名称。自然也可以用谷歌搜索。


您是否建议我需要减少上下文切换?通过procmon报告的数字远低于我在网上看到的其他示例。但这不能被额外的硬件/ CPU资源抵消吗?
ewwhite 2014年

我建议您研究一下是否与您的问题有关。如果您已经对其进行了测量,但是根据您的研究,该数量似乎很低,那么显然不是。对于添加到系统中的每个处理器,公差级别呈线性增加。但是,我不相信有一个绝对阈值水平,但原则上需要为每个(健康)系统设定基线。
ErikE 2014年

从虚拟化的角度来看,即使不是很重要,这篇博客文章也很有趣: professionalvmware.com/2010/11/context-switching-some-resources如该链接文档所示,虚拟化多核上下文切换的成本估算很棘手:blog.tsunanet.net/2010/11/...
ErikE

0

我建议实施WSRM(Windows系统资源管理器)。当在一台主机上运行大量应用程序,连接和服务时,系统并不知道每个人都需要一起玩。Windows Server自然会尝试使用其所有资源来始终完成所有事情,除非被告知...进入WSRM。

通过实施WSRM,您可以通过各种变体来设置资源限制,以确保所有正在运行或已连接的用户都拥有一个公平的竞争环境。从您的笔记中看来,这似乎不是ESX / vSphere问题,而是太多正在不断竞争所有连接用户的连接用户。您将必须测试WSRM,才能找到一种在所有资源之间平衡资源但又不影响每个人已经习惯的性能水平的令人满意的媒介。

WSRM概述:http : //technet.microsoft.com/zh-cn/library/cc732553.aspx


谢谢。我已经安装了WSRM和“ 每个会话相等”概要文件。
ewwhite 2014年

我不确定WSRM是否可以缓解根本的问题,我的直觉告诉我这是某种类型的内存耗尽(并且基于相同的问题,W2K3中的错误消息是某种类型的内核内存耗尽)。
joeqwerty 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.