Frage 2008 R2 Terminal Server: "Es sind nicht genügend Systemressourcen vorhanden, um den angeforderten Dienst abzuschließen"


Ich arbeite mit einem fehlerhaften Windows 2008 R2-Terminalserver, der in einer vSphere-Umgebung konfiguriert ist. Es hat derzeit 4 vCPUs und 32 GB RAM. Keine Überforderung.

Die Zahl der gleichzeitigen Benutzer auf diesem Server ist in den letzten Monaten stark angestiegen (~ 70) und liegt möglicherweise über dem empfohlenen Wert. Aufgrund der Anwendungen, die von den Benutzern auf diesem System verwendet werden, wird die Aufteilung auf mehrere Server eine Herausforderung darstellen, die über den Umfang dieser Frage hinausgeht.

An bestimmten Punkten während der Woche (und jetzt fast täglich) führen neue Benutzeranmeldungen jedoch zu folgenden Fehlern: Ereignis-ID 1500

Windows kann Sie nicht anmelden, weil Ihr Profil nicht geladen werden kann. Prüfen   dass Sie mit dem Netzwerk verbunden sind und dass Ihr Netzwerk ist   funktioniert richtig.

DETAIL - Es sind nicht genügend Systemressourcen vorhanden, um das System zu vervollständigen   angeforderter Service.

Dies bleibt so lange bestehen, bis sich einige Benutzer abmelden, Sitzungen manuell getrennt werden oder das System vollständig neu gestartet wird.

Ich würde gerne wissen:

  • Auf welche Ressource (n) bezieht sich diese Fehlermeldung? Was ist eigentlich eingeschränkt?
  • Gibt es eine einstellbare OS-Ebene oder Konfiguration, die dabei helfen kann?
  • Benutzer sind mit der Leistung zufrieden, mit Ausnahme der erhöhten Häufigkeit dieser Fehlermeldung. Gibt es hier noch etwas anderes?
  • Gibt es ein absolutes Limit für die Anzahl der Benutzer, die ein Terminalserver aufnehmen kann? Ich sehe 150+ Benutzer in bestimmten Tuning-Guides für Terminal-Server beschrieben.

enter image description here

enter image description here


19
2018-01-17 18:27


Ursprung


Ist Das ist dein Problem?. Ich kann nicht sagen, dass ich dies auf einem Windows Server 2008 erlebt habe R2 Server, aber ich bin 2003 und 2008 sehr oft darauf gestoßen, vielleicht gilt es immer noch. - HopelessN00b
@ HopelessN00b Die Ereignis-ID 1508 auf das häufig verwiesen wird, wird in dieser Umgebung nicht angezeigt. Die meisten meiner Recherchen haben mich zu Lösungen geführt, die auf Windows 2003-Umgebungen ausgerichtet sind, aber vielleicht sind meine Google-Kenntnisse jetzt nicht verfügbar ... - ewwhite
Dies ist für das Jahr 2003, aber Sie können es sich ansehen, wenn es relevant erscheint: support.microsoft.com/kb/935649 - ErikE
@ HopelessN00b Ich überprüfte RegistrySizeLimitund es ist nicht definiert. - ewwhite
@ErikE Diese Registrierungseinträge sind 2008 R2 ignoriert. - ewwhite


Antworten:


Dies wurde gelöst. 

Ich begann, die Registrierung zu untersuchen, da das Problem durch die Erhöhung der CPU- und RAM-Ressourcen auf der virtuellen Maschine nicht behoben werden konnte.

Ich wurde auf Microsofts hingewiesen Dureg Werkzeug, um die Größe der Registry zu schätzen. Beim Browsen über regedit stieß ich auf Probleme beim Öffnen der Schlüssel unter HKEY_USERS\.Default\PRINTERS. Verwenden dureg, Begann ich in dieser Hierarchie zu suchen.


Drucker waren das Problem. Die Ursache und die Fehlerbehebung sind detailliert in:
  Die Größe der Registrierungsstruktur "HKEY_USERS.DEFAULT" nimmt auf einem Windows Server 2008 R2 SP1-basierten Server kontinuierlich zu

Hotfix: http://support.microsoft.com/kb/2871131 

Dies stoppt anscheinend das Wachstum, aber die Schlüssel und die Registrierung müssen komprimiert werden, um Speicherplatz freizugeben.

Komprimierte Registrierung komprimieren: 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

Hmm, ein paar Schritte ... während der Produktionszeit etwas schwierig zu erledigen. Ich habe versucht, mich zu erreichen Resident Microsoft Experte zu vervollständigen, aber er war beschäftigt, irgendwas SCCM oder SCVMM Problem irgendwo zu jagen. Als ich einige Citrix-bezogene Foren gelesen habe, habe ich ein Tool zur Kenntnis genommen, das das obige mit weniger Schritten durchführen könnte ...

Also habe ich einen virtuellen Maschinenschnappschuss gemacht, dann heruntergeladen und ausgeführt Freeware-Registry-Komprimierungssoftware (Tweaking.com); trotz der überwältigender Sound des kollektiven Stöhnens von Microsoft Systemingenieuren überall ...

Beachten Sie die 1,4 GB in der Standardkonfiguration gespeichert ... tucows

BITTE NEUSTARTEN!

Nach einem Neustart war alles in Ordnung. Die Anzahl der Benutzer erreichte 86 ohne negative Auswirkungen und keine profilbezogenen Fehler. Ich habe die Druckerregistrierungsstruktur überwacht und sie wird stabil gehalten.


15
2018-01-26 19:33



Könnte dies verhindert worden sein, indem die RDP-Druckerumleitung deaktiviert wurde? Manchmal werden Kunden haben furchtbar Druckertreiber, die auf alle Server kopiert werden, die auch RDP sind. Für einen Terminalserver benötigen Sie möglicherweise die RDP Printer Redirection ... - kce
@kce Alle Clients in dieser Umgebung waren Thin Clients, außer vielleicht 2 oder 3 PCs. Es könnte auch ein Problem mit dem Kunden geben, der lokale Drucker auf dem TS anstelle der GPO - verteilten Drucker installiert ... aber der Fehler, der im Hotfix erwähnt wurde, war ein Problem. - ewwhite
Danke für die Diagnose, den Hotfix und das Tool! Ich erinnere mich vage daran, dass mir dieses Problem einmal passierte, aber dann passierte eine völlig unabhängige Korruption, also habe ich einfach alles neu installiert. Ich werde dieses Lesezeichen in meinem Evernote speichern, wenn ich ein ähnliches Problem in der Zukunft habe. Noch einmal Danke! - pepoluan
Für die Aufzeichnungen habe ich das obige getan und es gelöst, aber jetzt bin ich mit einer anderen Registrierung Blähung konfrontiert: HKU\.DEFAULT\Software\Hewlett-Packard und HKU\.DEFAULT\Software\Lexmark beide zusammen machen etwa 1,2 GB der DEFAULT-Registrierungsdatei aus! - ETL


In Windows Server 2003 war dieser Fehler ein Ergebnis der Erschöpfung des Kernelspeichers. Da Sie mit Windows Server 2008 R2 zu tun haben, bin ich mir nicht sicher, wie eng die Ursache des Problems mit der Ursache in W2K3 zusammenhängt, aber ich wette, dass dies aufgrund der Anzahl der Benutzer und Prozesse ein Speicherproblem ist. Ich würde die Erschöpfung von Nicht-ausgelagerten Pools als mögliche Ursache betrachten. Außerdem liegt die Anzahl der Prozesse bei fast 800, was ziemlich hoch ist. MS würde Ihnen wahrscheinlich empfehlen, die Anzahl der Prozesse zu reduzieren, was nur durch eine Reduzierung der Benutzerlast erreicht werden kann.

Dieser Artikel enthält einige gute Informationen zur Speichernutzung in Windows und wie Sie das Nonpaged Pool-Limit anzeigen können, um zu sehen, ob das die Ursache des Problems ist:

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


3
2018-01-17 19:34



800 Prozesse sind zu hoch?!? Aber in Linux ... :( - ewwhite
Bevor Sie sich über 800 Prozesse beschweren, die im Vergleich zu Linux hoch sind, fügen Sie die Spalte "Threads" zum Prozessmonitor hinzu und sehen Sie, wie viele von ihnen Sie sehen ... Prozesse in Linux und Windows sind verschiedene Vögel. Deren Vergleich ist unfair gegenüber beiden Kernel-Designs. - Mark


Starten Sie Windows-Systemmonitor, um die verschiedenen Leistungsindikatoren zu überwachen:

  • Kontextwechsel
  • Seitentabelleneinträge
  • GDI-Elemente
  • Griffe
  • ... (was auch immer du finden kannst)

Und sehen Sie, ob einer dieser Spitzen bei einem fehlgeschlagenen Login auftritt.

Außerdem: etwas verursacht auf Ihrem System eine hohe CPU% des Kernels - Sie sollten das untersuchen, um zu sehen, ob es Sie zu einem verwandten Problem führt.


Das Benutzerprofil Hive-Bereinigung Service kann hier helfen, da es "sicherstellt, dass Benutzersitzungen vollständig beendet werden, wenn sich ein Benutzer abmeldet".


2
2018-01-20 17:14



Kann ich einfach weitere vCPUs hinzufügen? - ewwhite
Wenn Sie mehr Verarbeitungsleistung hinzufügen, wird die hohe Kernel-% -Nutzung nicht behoben, sondern nur maskiert. Außerdem ist es wahrscheinlich nicht direkt die Quelle Ihrer Anmeldefehler. - MikeyB
Dem ich versuche auf den Grund zu kommen ... - ewwhite
Die UPHClean-Dienstprogrammfunktionalität wird nativ über den Benutzerprofilbereinigungsdienst ab w2k8 bereitgestellt. - ErikE
@ewwhite Hier ist ein Microsoft-Artikel, der die PTE-Erschöpfung auf W2k3-TS-Servern erwähnt. Es könnte sich lohnen, einige Perfmon-Counter zu werfen, um zu prüfen, ob das mit dir passiert. - HopelessN00b


Nun, nach dem, was ich über die RDS-Kapazitätsplanung in Server 2008 R2 gelesen habe, können Sie Ihren schlechten Terminalserver nur mit unzureichenden Ressourcen für die Anzahl der Benutzer ausführen, die Sie verwenden. Insbesondere bemerke ich, dass Sie auf 4 vCPUS 80 Benutzer haben und MS empfiehlt 1 Kern pro 15 Benutzer.

Aus dem Technet-Blog mit dem Titel RDS-Dimensionierung und Planung der Kapazitätsplanung:

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 Memory (RAM) ist die optimale Grenze für jeden Kern einer CPU. Z.B. Wenn Sie 4 GB RAM haben, sollte es für eine optimale Leistung eine Dual-Core-CPU geben.
  • 2 Dual-Core-CPU-Leistung besser als einzelne Quad-Core-Prozessor.
  • Empfohlene Bandbreite für LAN von 30 Benutzern und WAN von 20 Benutzern. Bandbreite (b) = 100 Megabit pro Sekunde (Mbps) mit Latenz (l) Weniger als 5 Millisekunden.
  • Auf einem Terminal Server 64 MB pro Benutzer ist die ideale Speicher (RAM) -Anforderung für GP Nur + 2 GB für OS z. B. verwenden. (100 Benutzer * 64) + 2000 = 8,4 GB, d. H. 8 GB RAM.
  • Weitere Anwendungen (d. H. Office, CAD-Anwendungen usw.) erfordern mehr Speicher pro Benutzer, der dieser Berechnung über den 64 MB-Basisspeicher pro Benutzer hinzugefügt werden muss.
  • 15 TS-Sitzung pro CPU-Kern ist die optimale Leistungsgrenze eines Terminalservers.
  • Das Netzwerk sollte nicht mehr als 5 Hops haben und die Latenz sollte unter 100 ms liegen.
  • 64 kbit / s ist die ideale Bandbreite pro Benutzersitzung. (256 Farben, geschaltetes Netzwerk, nur Bitmap-Caching)
  • Die CPU-Leistung verschlechtert sich, wenn die Prozessorzeit pro Prozessor konstant über 65% liegt.
  • Die Leistung der Terminalserver verdoppelt sich, wenn sie auf einer X64-HW und OS ausgeführt wird.

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

Hier herunterladen


1
2018-01-20 19:38





Ich habe sehr wenig Zeit, also werde ich nur eine skizzenhafte Antwort geben und hoffentlich später ausarbeiten.

Als ich in Citrix-Teams Zaubersprüche geschrieben habe, erinnere ich mich daran, dass wir versucht haben, 15-20 Benutzer pro Server zu nivellieren, aber diese hatten einige schwere Apps laufen. In diesen Tagen von x64 laden wir mehr Benutzer, aber 70+ klingt wie viel.

Der Perfmon-Counter, der ausging, war nicht selten ein Kontextwechsel, er würde einen Server ersetzten, während andere Zähler wie RAM, CPU usw. gut aussahen. Möglicherweise könnte das ein Grund sein (der Server kann keine Ressourcen zuweisen, bevor das Timing aufgrund eines übermäßigen Kontextwechsels fehlschlägt). Hier sind zwei Möglichkeiten, den Kontextwechsel zu überwachen:

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.

Möglicherweise finden Sie auch im Kapazitätsplanungshandbuch etwas Nützliches, in dem Sie einen Link finden dieser Blogbeitrag.

Wenn ich die Zeit für diese Antwort nutzen kann, werde ich dies tun. Ich füge hier nur eine Warnung zu allen zeitbasierten Messungen in einer virtuellen vSphere-Maschine hinzu.

Aufgrund der Tatsache, dass die vCPU von den physischen CPUs abstrahiert wurde, hat die vCPU keine Ahnung, wie spät es ist (eine virtuelle Sekunde kann mehr oder weniger als eine reale (oder zumindest physikalische) Sekunde sein Perfmon-Zähler (CPU-Zeit, Kontextwechsel / Sek. und so weiter) sind ungenau (manchmal sogar wild), selbst wenn sie als sehr grobkörnige Indikatoren dienen könnten.

Um dies zu überprüfen, vergleichen Sie jeden nativen zeitbasierten CPU-Zähler innerhalb der VM mit dem Gegenstück auf dem vSphere-Host für diese VM. Aus diesem Grund veröffentlicht VMware einige Zähler für die CPU (und Speicher, die auch aus der Gastsicht ungenau sind) über VMware-Tools in zwei VMguest-perfmon-Objekte.

Daher werden die korrekten zeitbasierten Werte innerhalb des Gast-Perfmon bereitgestellt, jedoch nur, wenn man sich die Zähler für veröffentlichte VMware-Objekte ansieht.

Ich fand diese grundlegenden Informationen ein wenig relevant, da sich die Antworten bisher auf zeitbasierte Messungen innerhalb einer virtuellen vSphere-Maschine konzentrieren, wo dies in einigen Fällen ein entscheidender Faktor für eine korrekte Analyse ist. Es bezieht sich natürlich auch direkt auf das Thema dieser besonderen (unvollendeten) Antwort und ihrer Kommentare. Es kann für jemanden von Nutzen sein.

Sobald ich Zeit habe, werde ich in Links zu den Whitepapers etc., die sich mit diesem Thema beschäftigen, und den genauen Counter-Pfaden Namen bearbeiten. Natürlich ist alles auch googlefähig.


1
2018-01-18 08:56



Schlägst du vor, dass ich den Kontextwechsel reduzieren muss? Die über procmon gemeldeten Zahlen waren viel niedriger als andere Beispiele, die ich online sah. Aber kann dem nicht durch zusätzliche Hardware / CPU-Ressourcen begegnet werden? - ewwhite
Ich schlage vor, Sie schauen, ob es für Ihr Problem relevant sein könnte. Wenn Sie es gemessen haben und die Menge scheint niedrig nach Ihrer Forschung ist es offensichtlich nicht. Die Toleranzstufe wird für jeden Prozessor, der dem System hinzugefügt wird, linear erhöht. Ich glaube jedoch nicht, dass es einen absoluten Schwellenwert gibt, aber im Prinzip muss er pro (gesundem) System festgelegt werden. - ErikE
Dieser Blogbeitrag war aus der Virtualisierungsperspektive einfach nur interessant, wenn auch wahrscheinlich nicht relevant: professionalvmware.com/2010/11/context-switching-some-resources Und wie in diesem verknüpften Dokument zu sehen ist, ist die Kostenschätzung virtualisierter Multicore-Kontextwechsel schwierig: blog.tsunanet.net/2010/11/... - ErikE


Ich würde vorschlagen, WSRM (Windows System Resource Manager) zu implementieren. Wenn eine Unmenge von Apps, Verbindungen und Diensten auf einem Host läuft, weiß das System nicht, dass jeder gut zusammen spielen muss. Windows Server versucht natürlich, alle Ressourcen zu verwenden, um die gesamte Zeit zu vervollständigen, es sei denn, es wird darauf hingewiesen ... Geben Sie WSRM ein.

Durch die Implementierung von WSRM können Sie Ressourcenlimits für alle Arten von Variationen festlegen, um sicherzustellen, dass für alle laufenden oder verbundenen Benutzer ein ausgeglichenes Spielfeld vorhanden ist. Aus Ihren Notizen scheint dies kein ESX / vSphere-Problem zu sein, sondern zu viele verbundene Benutzer, die ständig um alles konkurrieren. Sie müssen WSRM testen, um ein glückliches Mittel zu finden, Ressourcen unter allen zu balancieren, aber auch nicht das Leistungsniveau zu beeinflussen, an das sich jeder gewöhnt hat.

WSRM-Übersicht: http://technet.microsoft.com/en-us/library/cc732553.aspx


0
2018-01-25 03:44



Vielen Dank. Ich habe bereits WSRM mit dem installiert Gleich pro Sitzung Profil. - ewwhite
Ich bin mir nicht sicher, ob WSRM das zugrunde liegende Problem lindern kann, was meiner Meinung nach die Speichererschöpfung eines bestimmten Typs ist (und basierend auf dem gleichen Problem und der Fehlermeldung in W2K3 ist eine Art Kernelspeicher-Erschöpfung). - joeqwerty