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é au cours des 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.
Cependant, à certains moments de la semaine (et maintenant, presque tous les jours), les nouvelles ouvertures de session utilisateur produisent 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 déconnectées manuellement ou que le système soit complètement redémarré.
J'aimerais savoir:
Cela a été résolu.
J'ai commencé à examiner le registre car l'augmentation du processeur et des ressources 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élicat à faire à distance pendant les heures de production. J'ai essayé de contacter mon expert Microsoft résident pour terminer, mais il était occupé à traquer certains SCCM ou problème 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é logiciel de compression de registre gratuit (Tweaking.com) ; malgré le son accablant des grognements collectifs des ingénieurs systèmes de Microsoft partout ...
notez les 1,4 Go enregistrés dans la configuration par défaut ...
VEUILLEZ REDÉMARRER !
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é le registre d'imprimante Hive et il est stable.
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 sur l'utilisation de la mémoire dans Windows et sur la façon dont 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
Démarrez l'Analyseur de performances Windows pour surveiller les différents compteurs:
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 ser Profile Hive Cleanup peut aider ici car il "aide à garantir que les sessions utilisateur sont complètement terminées lorsqu'un utilisateur se déconnecte".
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:
In addition to that, Microsoft has just released a whitepaper on Capacity Planning in Windows Server 2008 R2.
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 le changement 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 ce 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, etc.) 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 n'importe quel compteur CPU natif basé sur le temps dans le VM avec son homologue sur l'hôte vSphere pour cette VM. Pour cette raison, VMware publie certains compteurs pour CPU (et la mémoire qui est également inexacte) du point de vue de l'invité) via les outils VMware dans deux objets perfmon VMguest.
Ainsi, les valeurs temporelles correctes sont 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. Bien entendu, il se rapporte également 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, j'éditerai des liens vers les livres blancs, etc. qui développent à ce sujet, et les chemins de compteur exacts\noms. Naturellement, tout est également googleable.
Je suggérerais 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 seul hôte, le système ne sait pas que tout le monde doit jouer à Nice 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