2008 R2 Terminal Server: «Les ressources système sont insuffisantes pour terminer le service demandé»

21

Je travaille avec un serveur Terminal Server Windows 2008 R2 malsain configuré dans un environnement vSphere. Il dispose actuellement de 4 processeurs virtuels et de 32 Go de RAM. Aucun engagement excessif.

Le nombre d'utilisateurs simultanés sur ce serveur a fortement augmenté ces derniers mois (~ 70) et est probablement supérieur au niveau recommandé. En raison des applications utilisées par les utilisateurs sur ce système, le fractionnement en plusieurs serveurs sera un défi au-delà de la portée de cette question.

Toutefois, à certains moments de la semaine (et maintenant, presque quotidiennement), les nouvelles ouvertures de session des utilisateurs génèrent les erreurs suivantes: ID d'événement 1500

Windows ne peut pas vous connecter car votre profil ne peut pas être chargé. Vérifiez que vous êtes connecté au réseau et que votre réseau fonctionne correctement.

DÉTAIL - Les ressources système sont insuffisantes pour terminer le service demandé.

Cela reste jusqu'à ce que certains utilisateurs se déconnectent, que les sessions soient manuellement déconnectées ou que le système soit complètement redémarré.

J'aimerais savoir:

  • À quelle (s) ressource (s) ce message d'erreur fait-il référence? Qu'est-ce qui est réellement contraint?
  • Existe-t-il un réglage ou une configuration au niveau du système d'exploitation qui peut vous aider?
  • Les utilisateurs sont satisfaits des performances, à l'exception de la fréquence accrue de ce message d'erreur. Y a-t-il autre chose en jeu ici?
  • Y a-t-il une limite absolue au nombre d'utilisateurs qu'un serveur Terminal Server peut accueillir? Je vois plus de 150 utilisateurs décrits dans certains guides de réglage pour les serveurs Terminal Server.

entrez la description de l'image ici

entrez la description de l'image ici

ewwhite
la source
Est- ce votre problème? . Je ne peux pas dire que j'ai vécu cela sur un serveur Windows Server 2008 R2 , mais je l'ai rencontré beaucoup en 2003 et 2008, alors peut-être que cela s'applique toujours.
HopelessN00b
@ HopelessN00b L' ID d'événement 1508 qui est souvent référencé n'apparaît pas dans cet environnement. La plupart de mes recherches m'ont conduit à des solutions adaptées aux environnements Windows 2003, mais peut-être que mes compétences Google sont maintenant désactivées ...
ewwhite
C'est pour 2003, mais vous voudrez peut-être regarder si cela semble pertinent: support.microsoft.com/kb/935649
ErikE
@ HopelessN00b J'ai vérifié RegistrySizeLimit, et ce n'est pas défini.
ewwhite
1
@ErikE Ces entrées de registre sont ignorées dans 2008 R2 .
ewwhite

Réponses:

16

Cela a été résolu.

J'ai commencé à examiner le registre car l'augmentation des ressources CPU et RAM sur la machine virtuelle n'a pas résolu le problème.

J'ai été pointé sur l' outil dureg de Microsoft pour estimer la taille du registre. En naviguant via regedit, j'ai rencontré des problèmes d'ouverture des clés sous HKEY_USERS\.Default\PRINTERS. En utilisant dureg, j'ai commencé à sonder sous cette hiérarchie.


Les imprimantes étaient le problème. La cause et le correctif sont détaillés dans:
La taille de la ruche de registre "HKEY_USERS.DEFAULT" augmente continuellement sur un serveur Windows Server 2008 R2 SP1

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

Cela arrête apparemment la croissance, mais les clés et le registre doivent être compressés pour récupérer de l'espace.

Compression du registre gonflé: 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, quelques étapes ... un peu délicates à faire à distance pendant les heures de production. J'ai essayé de contacter mon expert Microsoft résident pour terminer, mais il était occupé à traquer un problème SCCM ou SCVMM quelque part . En lisant certains forums liés à Citrix, j'ai pris note d'un outil qui pourrait effectuer ce qui précède en moins d'étapes ...

J'ai donc pris un instantané de la machine virtuelle, puis téléchargé et exécuté un logiciel de compression de registre gratuit (Tweaking.com) ; malgré le son écrasant des grognements collectifs des ingénieurs systèmes de Microsoft partout ...

notez les 1,4 Go enregistrés dans la configuration par défaut ... tucows

S'IL VOUS PLAÎT REDÉMARREZ!

Après un redémarrage, tout allait bien. Le nombre d'utilisateurs a atteint 86 sans aucun effet indésirable et aucune erreur liée au profil. J'ai surveillé la ruche du registre de l'imprimante et elle est restée stable.

ewwhite
la source
Cela aurait-il pu être évité en désactivant la redirection d'imprimante RDP? Parfois, les clients auront de terribles pilotes d'impression qui seront également copiés sur les serveurs qu'ils RDP. Bien sûr, pour un serveur Terminal Server, vous pourriez avoir besoin de la redirection d'imprimante RDP ...
1
@kce Tous les clients de cet environnement étaient des clients légers, à l'exception peut-être de 2 ou 3 PC. Il pourrait également y avoir un problème avec le client installant des imprimantes locales sur le TS au lieu des imprimantes distribuées par GPO ... mais le bogue mentionné dans le correctif était un problème malgré tout.
ewwhite
merci pour le diagnostic, le correctif et l'outil! Je me souviens vaguement de ce problème qui m'est arrivé une fois, mais une corruption totale non liée s'est produite, alors j'ai tout réinstallé. Je vais certainement mettre cela en signet dans mon Evernote, si j'ai rencontré un problème similaire à l'avenir. Merci encore!
pepoluan
Pour mémoire, j'ai fait ce qui précède et il a résolu, mais maintenant je suis confronté à un autre ballonnement de registre: HKU\.DEFAULT\Software\Hewlett-Packardet les HKU\.DEFAULT\Software\Lexmarkdeux ensemble pour environ 1,2 Go du fichier de registre DEFAULT!
ETL
3

Dans Windows Server 2003, cette erreur était due à l'épuisement de la mémoire du noyau. Parce que vous avez affaire à Windows Server 2008 R2, je ne sais pas à quel point la cause du problème est étroitement liée à la cause dans W2K3, mais je parierais que c'est un problème de mémoire en raison du nombre d'utilisateurs et de processus. Je voudrais jeter un œil à l'épuisement de la mémoire du pool non paginé comme cause probable. De plus, le nombre de procès est proche de 800, ce qui est assez élevé. MS vous dirait probablement de réduire le nombre de processus, ce qui ne peut être fait qu'en réduisant la charge utilisateur.

Cet article contient de bonnes informations concernant l'utilisation de la mémoire dans Windows et comment vous pouvez afficher la limite du pool non paginé pour voir si c'est la cause du problème:

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

joeqwerty
la source
2
800 processus est trop élevé?!? Mais sous Linux ... :(
ewwhite
Avant de vous plaindre que 800 processus sont élevés par rapport à Linux, ajoutez la colonne "threads" au moniteur de processus et voyez combien d'entre eux vous voyez ... les processus sous Linux et Windows sont des oiseaux différents. Les comparer est injuste pour les deux conceptions de noyau.
Mark
2

Démarrez l'Analyseur de performances Windows pour surveiller les différents compteurs:

  • Commutateurs de contexte
  • Entrées de table de page
  • Éléments GDI
  • Poignées
  • … (Tout ce que vous pouvez trouver)

Et voyez si l'un de ces pics lorsque vous obtenez une connexion a échoué.

Aussi: quelque chose cause un% CPU élevé du noyau sur votre système - vous devriez vérifier cela pour voir si cela vous mène à un problème connexe.


Le service de nettoyage de la ruche de profil utilisateur peut aider ici car il "aide à garantir que les sessions utilisateur sont complètement terminées lorsqu'un utilisateur se déconnecte".

MikeyB
la source
Puis-je simplement ajouter plus de vCPU?
ewwhite
L'ajout de plus de puissance de traitement ne résoudra pas le pourcentage élevé d'utilisation du noyau, il le masquera simplement. En outre, ce n'est probablement pas directement la source de vos échecs de connexion.
MikeyB
Ce que j'essaie d'aller au fond de ...
ewwhite
La fonctionnalité de l'utilitaire UPHClean est fournie en mode natif via le service de nettoyage de profil utilisateur à partir de w2k8 et au-delà.
ErikE
@ewwhite Voici un article de Microsoft mentionnant l'épuisement des PTE sur les serveurs W2k3 TS . Cela pourrait valoir la peine de jeter des compteurs de perfmon pour vérifier si c'est ce qui vous arrive.
HopelessN00b
1

Eh bien, d'après ce que j'ai lu sur la planification de la capacité RDS dans Server 2008 R2, vous pourriez simplement exécuter votre pauvre serveur Terminal Server sur des ressources insuffisantes pour le nombre d'utilisateurs que vous l'utilisez. En particulier, je remarque que vous avez 80 utilisateurs sur 4 vCPUS, et MS recommande 1 cœur pour 15 utilisateurs.

Du blog technet intitulé RDS Sizing and Capacity Planning Guidance :

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:

  • 2 Go de mémoire (RAM) est la limite optimale pour chaque cœur d'un CPU. Par exemple, si vous avez 4 Go de RAM, pour des performances optimales, il devrait y avoir un processeur double cœur.
  • 2 CPU Dual Core fonctionnent mieux que le processeur Quad Core simple.
  • Bande passante recommandée pour LAN de 30 utilisateurs et WAN de 20 utilisateurs. Bande passante (b) = 100 mégabits par seconde (Mbps) avec Latence (l) Moins de 5 millisecondes.
  • Sur un serveur Terminal Server, 64 Mo par utilisateur sont la mémoire idéale (RAM) requise pour GP. Utilisez uniquement + 2 Go pour le système d'exploitation, par exemple (100 utilisateurs * 64) + 2000 = 8,4 Go, soit 8 Go de RAM.
  • Plus d'applications utilisées (c.-à-d. Office, applications CAO, etc.) nécessiteront plus de mémoire par utilisateur pour être ajoutées à ce calcul sur la mémoire de base de 64 Mo par utilisateur.
  • 15 session TS par cœur de processeur est la limite de performances optimale d'un serveur Terminal Server.
  • Le réseau ne doit pas avoir plus de 5 sauts et la latence doit être inférieure à 100 ms.
  • 64 kbps est la bande passante idéale par session utilisateur. (256 couleurs, réseau commuté, mise en cache bitmap uniquement)
  • Les performances du processeur se dégradent si le% de temps processeur par cœur est constamment supérieur à 65%.
  • Les performances des serveurs Terminal Server doublent lorsqu'il s'exécute sur un HW et un système d'exploitation X64.

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

Télécharger les ici

HopelessN00b
la source
1

J'ai très peu de temps donc je vais juste faire une réponse sommaire et j'espère l'étoffer plus tard.

Lorsque je faisais des sorts dans les équipes Citrix, je me souviens que nous avions essayé de passer à 15-20 utilisateurs par serveur, mais ceux-ci avaient des applications lourdes en cours d'exécution. Ces jours-ci de x64, nous chargeons plus d'utilisateurs, mais 70+ semble beaucoup.

Le compteur de perfmon maximisant n'était pas rarement un changement de contexte, il étage un serveur tandis que d'autres compteurs comme la RAM, le CPU, etc. semblaient bons. Cela pourrait être une raison (le serveur ne peut pas allouer de ressources avant l'expiration du délai en raison d'un changement de contexte excessif). Voici deux façons de surveiller la commutation de contexte :

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.

Vous pouvez également trouver quelque chose d'utile dans le guide de planification des capacités, vous trouverez un lien vers celui-ci dans cet article de blog .

Lorsque je peux tirer du temps sur cette réponse, je le ferai, je vais simplement ajouter ici une mise en garde sur toutes les mesures basées sur le temps dans une machine virtuelle vSphere.

En raison de la façon dont le vCPU a été extrait des CPU physiques, le vCPU n'a aucune idée de l'heure qu'il est (une seconde virtuelle peut être plus ou moins d'une seconde réelle (ou au moins physique). Par conséquent, basée sur tout le temps les compteurs perfmon (temps CPU, changements de contexte / s et ainsi de suite) sont inexacts (parfois même de manière extravagante), même s'ils peuvent servir d'indicateurs à grain très grossier.

Pour vérifier cela, comparez tout compteur de CPU natif basé sur le temps au sein de la machine virtuelle avec son homologue sur l'hôte vSphere pour cette machine virtuelle. Pour cette raison, VMware publie certains compteurs pour le CPU (et la mémoire qui est également inexacte du point de vue des invités) via les outils VMware dans deux objets perfmon VMguest.

Ainsi, les valeurs temporelles correctes sont rendues disponibles à partir du perfmon invité, mais uniquement si l'on regarde les compteurs d'objets publiés par VMware.

Je pensais juste que ces informations de base étaient un peu pertinentes car les réponses jusqu'à présent se concentrent sur les mesures basées sur le temps à partir d'une machine virtuelle vSphere, où cela est dans certains cas une circonstance cruciale pour une analyse correcte. Elle se rapporte également, bien entendu, directement au thème de cette réponse (inachevée) particulière et à ses commentaires. Cela peut être utile à quelqu'un.

Dès que j'aurai le temps, je modifierai les liens vers les livres blancs, etc. qui expliquent cela, et les chemins de compteur exacts \ noms. Naturellement, tout est également googleable.

ErikE
la source
Suggérez-vous que je dois réduire le changement de contexte? Les chiffres rapportés via procmon étaient bien inférieurs aux autres exemples que j'ai vus en ligne. Mais cela ne peut-il pas être contré par des ressources matérielles / CPU supplémentaires?
ewwhite
Je vous suggère de voir si cela peut être pertinent pour votre problème. Si vous l'avez mesuré et que la quantité semble faible selon vos recherches, ce n'est évidemment pas le cas. Le niveau de tolérance augmente linéairement pour chaque processeur ajouté au système. Cependant, je ne pense pas qu'il existe un niveau de seuil absolu, mais en principe, il doit être établi par système de base (sain).
ErikE
Ce billet de blog était tout simplement intéressant du point de vue de la virtualisation, même s'il n'est probablement pas pertinent: professionalvmware.com/2010/11/context-switching-some-resources Et comme on le voit dans ce document lié, l'estimation des coûts de la commutation de contexte multicœur virtualisée est délicate : blog.tsunanet.net/2010/11/…
ErikE
0

Je suggère d'implémenter WSRM (Windows System Resource Manager). Lorsqu'il y a une tonne d'applications, de connexions et de services exécutés sur un hôte, le système ne sait pas que tout le monde doit jouer bien ensemble. Windows Server essaie naturellement d'utiliser toutes ses ressources pour tout terminer tout le temps à moins qu'il en soit informé ... entrez WSRM.

En implémentant WSRM, vous pouvez définir des limites de ressources par toutes sortes de variations pour vous assurer qu'il existe un terrain de jeu égal pour tout ce qui fonctionne ou les utilisateurs connectés. D'après vos notes, cela ne semble pas être un problème ESX / vSphere mais plutôt trop d'utilisateurs connectés qui sont constamment en concurrence pour tout. Vous devrez tester WSRM pour trouver un juste milieu d'équilibrage des ressources entre tout, mais sans affecter les niveaux de performance auxquels tout le monde s'est habitué.

Présentation de WSRM: http://technet.microsoft.com/en-us/library/cc732553.aspx

MethoteK
la source
Merci. J'ai déjà installé WSRM avec le profil Égal par session .
ewwhite
Je ne suis pas sûr que WSRM puisse atténuer le problème sous-jacent, ce que mon instinct me dit est l'épuisement de la mémoire d'un certain type (et basé sur le même problème et le message d'erreur dans W2K3 est un certain type d'épuisement de la mémoire du noyau).
joeqwerty