Profil Ctx_SmaUser

Bonjour tout le monde.



Suite à un problème que j’ai eu avec une augmentation exponentielle de la BDR des serveurs Windows 2000 de la ferme Citrix d’un client…

J’ai trouvé sa sur le forum posté par chaver http://forum-citrix.com/index.php/topic,298.0.html mais rien de plus malheureusement…



Résumé rapide :



Nombreux message dans les log NT de type 2020 et 1000 en relation avec une taille de base de registre ou des ressources du système insuffisantes.



Jusque la pas trop de problème avec une kb Microsoft relative à ce type d’évènement et qui semble résoudre ce problème: Article ID : 906952 (Pour info je ne l’ai pas appliquée)



A la suite de cela, une sortie du serveur de la ferme car de nombreux utilisateurs n’arrivaient plus à ce connecter au serveur avec un message d’erreur (identique au login en local avec les comptes d’administration) -Taille de registre insuffisante- le serveur ouvre une session avec un profil par défaut.



Ayant ce type de problème depuis longtemps sur l’ensemble du parc du client…Les techniciens de la hotline ont pris pour habitude de régler le problème en augmentant la taille du registre…



Pour mon cas, en effectuant cette modification, j’obtenais toujours le même message de taille de registre insuffisante au login. Pourtant la valeur de mon registre était 200 Mo, l’utilisation de 134 Mo ?



Après moult recherches, je me rend compte que le profil de l’utilisateur Ctx_SmaUser a une taille de + de 100 Mo :stuck_out_tongue:

Et…à savoir que le user.dat du profil correspond à 90% de la taille du profil ???



J’ai décidé de supprimer le profil de l’utilisateur Ctx_SmaUser et la taille de mon registre est passé à 47 Mo. Une fois cette action réalisée, après un reboot du serveur, j’ai un profil de moins de 1Mo et mon login est de nouveau possible pour les admins et les utilisateurs.



Je connais encore très mal l’environnement Citrix et ce problème impacte la majorité des serveurs du client. L’extension de la BDR n’étant pas infinie, je me pose les questions suivantes :


  • La suppression du profil de l’utilisateur Ctx_SmaUser à telle un impact ?
  • Pourquoi cette augmentation du profil ?
  • Que peut bien stocker le système dans le profil Ctx_SmaUser ?
  • Existe-t-il un moyen de corriger pour que ce problème ne se reproduise plus ?



    Merci pour vos réponses

Est-ce qu tas appliqué ces clés de registre sur ton serveur ?

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl]

“RegistrySizeLimit”=dword:ffffffff



[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management]

“PagedPoolSize”=dword:ffffffff

"PoolUsageMaximum"=dword:0000003



http://support.microsoft.com/default.aspx?scid=kb;EN-US;312362

Par défaut, le gestionnaire de mémoire tente de réduire la mémoire paginée quand celle-ci atteint 80% de sa capacité. Si l’on atteint les 80%, on a effectivement une saturation de la page pool, donc des événements 2020.



Le mettre à 3% permet de décharger plus rapidement cette zone mémoire, quand on fait des accès nombreux d’ouverture de gros fichiers. C’est une faon d’améliorer les performances.



L’autre clé est très importante, car la taille de la mémoire paginée s’établit dynamiquement au démarrage : Si par exemple on change la taille de la base de registre, celle-ci est involontairement réduite, sans que l’on s’en rendent compte. Donc dans ce cas, on définit la taille Maximale.





c’est quasi obligatoire sur un serveur 2000.



Après te dire pourquoi le ctx_sma prend autant en base de registre …

est-ce que tu as éssayé de regarder le contenu du registre ctx_sma ?

Merci pour le conseil jolebarjo.



Ayant toujours des problèmes avec ce serveur, je teste les paramètres que tu m’as passés. Au vu des paramètres actuel, je pense que sa devrait le faire.

Sinon pour le profil, aucune idée ?? depuis que j’ai supprimé celui-ci, il y à 3 jours, il a doublé de volume ??? Je me demande se qui peut bien venir se coller dans le user.dat de l’utilisateur Ctx_SmaUser.

Si je trouve quelque chose d’intéressant, je le posterai ici.



Merci pour ton aide :wink:

j’ai souvent constaté ce problème de taille de profil mais je n’ai jamais personnellement travaillé sur ce sujet précis… je fais des recherches et j’en informe la communauté (au besoin avec création d’un article)

Mauvaise nouvelle !!! :’(



Tu peux passer tous les patchs de chez Citrix, Microsoft, Novell… Faire le tunning a mort de ton registre. CA NE CHANGERA RIEN!



Sous Windows 2000, contrairement a 2003, le registre est stocker dans les page spool de ta machine et la RSL (registry size limite) est a 153Mo.

Chez un client qui est sous W2K/CPS4 depuis 17 mois et qui ne veut pas claquer 80K€ en CAL TSE, j’ai fini par ajouter une alerte sous RM pour faire un petit mail a 80% de la RSL. Quand le mail arrive il se connecte au serveur, arrête les services utilisant le compte cts_smauser, kill les process de ce user, supprime son profil et relance les services, ce qui fabrique un profil tout neuf. C’est pas cool comme solution mais c’est ca ou Windows 2003



Voici le script utilisé pour faire ca:


cls
@echo off

net stop NRPE_NT
net stop "Cron service"
net stop "Citrix Print Manager Service"
net stop "Citrix SMA Service"

for /f "skip=1 tokens=4" %%i in ('qprocess ctx_smauser ') do pskill -t %%i
for /f "tokens=1" %%i in ('dir /b m:docume~1ctx_smauser*') do rmdir /Q /s "M:Documents and Settings%%i"

net start NRPE_NT
net start "Citrix Print Manager Service"
net start "Citrix SMA Service"
net start "Cron service"



Conseil: Passe sous 2003

Je te rejoins pour Windows 2003 Chavers, le client est déjà migré (AD 2003). Malheureusement tous les serveurs de productions sont encore en W2KS…

Merci pour le petit script, je pense que nous allons étudier cette solution afin de contourner ce problème.

Par contre j’ai une petite question pour jolebarjo s’il repasse par là…

J’ai modifié les valeurs du registre et ce matin le système me donne des informations un peu bizarre…



Il m’indique une taille de registre dans /

Propriété système > avancé > options de performances > mémoire virtuelle > taille actuelle du registre = 99 Mo

Taille maximale du registre = 0 Mo ???



Pourtant, lorsque je joue mon script de contrôle…je ne sais plus ou je l’ai attrapé celui-la :slight_smile:


On Error Resume Next
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & _
strComputer & "rootcimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_Registry")

For Each objItem in colItems
tt = "Current Size: " & objItem.CurrentSize & vbtab & "Maximum Size: " & objItem.MaximumSize &" "& round(( objItem.CurrentSize * 100 )/ objItem.MaximumSize,0) &"%"
Next
Wscript.Echo tt


Le script m'indique :

> taille actuelle du registre = 99 Mo la tout est OK
> Taille maximale du registre = 263 Mo ???

Je ne sais plus trop quoi penser....

Je repasse par la ;D



Tu as aussi l’article en français http://support.microsoft.com/kb/312362/fr qui explique plus “facilement” le pourquoi du comment.

Cause

Plusieurs facteurs peuvent limiter la fourniture de mémoire paginée du pool. Vous pouvez activer le balisage et prendre des instantanés à différents intervalles pour identifier le pilote qui consomme la mémoire paginée du pool. Si ces instantanés indiquent que la balise MmSt (PTE du prototype d’objet de la section Mm) est le plus grand consommateur, que la mémoire paginée du pool est épuisée ou que le système enregistre les événements d’erreur 2020, il y a de fortes chances pour que de très nombreux fichiers soient ouverts sur le serveur. Par défaut, le Gestionnaire de mémoire essaie de réduire la quantité de mémoire paginée du pool lorsque le système atteint 80 pour cent de la mémoire paginée en pool totale. En fonction de la configuration du système, la quantité maximale possible de mémoire en pool paginée sur un ordinateur est de 343 Mo et 80 pour cent de ce nombre représente 274 Mo. Si le Gestionnaire de mémoire ne parvient pas à cette réduction assez rapidement pour faire face à la demande, l’événement répertorié dans la section “Symptômes” de cet article peut se produire. En réglant le Gestionnaire de mémoire pour qu’il démarre plus tôt le processus de réduction (par exemple, lorsqu’il atteint 60 pour cent), il est possible de faire face à la demande de pool paginé en cas d’utilisation maximale subite, afin que la mémoire en pool paginée soit toujours suffisante.



Voici une explication rapide ;D

les causes entrainant une augmentation de taille du ntuser.dat de ctxsma_user sont liés à des crash/hang de cpsvc lors du login. le process d’autocreation assigne d’abord les printers à cet utilisateur avant d’ajouter la SID de l’utilisateur cible et ainsi retirer l’imprimante du ctxsma_user.

si cpsvc plante, cela ne peut etre fait et son registre augmente

"ThinIsFat" wrote:
les causes entrainant une augmentation de taille du ntuser.dat de ctxsma_user sont liés à des crash/hang de cpsvc lors du login. le process d'autocreation assigne d'abord les printers à cet utilisateur avant d'ajouter la SID de l'utilisateur cible et ainsi retirer l'imprimante du ctxsma_user.
si cpsvc plante, cela ne peut etre fait et son registre augmente


heu tu es sur de toi la ???

non ;D mais j’arrive pas a trouver d’autre cause pour le moment

Bon, je vais voir pour ajouter l’info sur la KB mais voilà ce que j’ai trouvé (j’avais donc raison… en quelque sorte)



Quand une fonction appelle AddPrinter() (http://msdn2.microsoft.com/en-us/library/ms535500.aspx), le spooler “imite” le process appelant pendant quasiment toute l’éxécution de AddPrinter(). Cela inclue la partie où les profils sont mis à jour suite à la création d’une imprimante.

en d’autre termes, quand cpsvc appelle AddPrinter(), le spooler imite les permissions de cpsvc (et donc de ctxsma_user) pour l’ajout de l’imprimante. Cela inclue également la mise à jour du profile…, une fois que AddPrinter() a retourné un code SUCCESS pour l’ajout d’imprimante, cpsvc va “imiter” les droits de l’utilisateur de la session ICA et lui assigner les imprimantes.



donc, si un problème de droit sur cpsvc (et donc ctxsma_user) l’empêche de faire cette derniere opération, l’utilisateur n’aura pas ses imprimantes et le profil de ctxsma_user va grossir car il n’aura pas pû se libérer des imprimantes crées via AddPrinter(). Egalement, si un crash du cpsvc survient à ce moment précis du “transfert” vers l’utilisateur, l’action n’aura pas lieu et le profil va grossir.



Sous Windows 2008 le mécanisme du spooler et les API évoluent. Avec Win2000 et Win2003 c’est malheuresement ainsi que cela se passe. Un nettoyage régulier du profil de ce petit monsieur est la meilleure chose à faire APRES avoir analysé les causes des dysfonctionnements potentiels constatés (crash/hang cpsvc, pas d’autocreation etc)

oula…je reste quoi ::slight_smile:

merci pour toutes ces réponses. le client est particulièrement friand de ce genre de renseignements et moi idem ;D



je pense que suite à ces réponse, une autre question de mon client trouve sa réponse. A savoir que lorsqu’il effectue un login, ou qu’il se déconnecte, de nombreux messages apparaissent sur le serveur impactant à plusieurs reprise une même imprimante :



exemple :



L’imprimante HP Officejet Pro K550 Series (de sarp0878) dans la session 29 a été vidée.

2. L’imprimante HP Officejet Pro K550 Series (de sarp0878) dans la session 29 a été supprimée.

3. L’imprimante HP Officejet Pro K550 Series (de sarp0878) dans la session 29 a été supprimée.

4. L’imprimante HP Officejet Pro K550 Series (de sarp0878) dans la session 29 a été créée.

5. L’imprimante Auto hp deskjet 840c series sur Qse (Copie 1) (de sarp0878) dans la session 29 a été supprimée

6. L’imprimante Auto hp deskjet 840c series sur Qse (Copie 1) (de sarp0878) dans la session 29 a été créée

7. L’imprimante Auto hp deskjet 840c series sur Qse (Copie 1) (de sarp0878) dans la session 29 a été supprimée.

8. L’imprimante Auto hp deskjet 840c series sur Qse (Copie 1) (de sarp0878) dans la session 29 a été créée.

9. L’imprimante Auto hp deskjet 840c series sur Qse (de sarp0878) dans la session 29 a été supprimée.

10. L’imprimante Auto hp deskjet 840c series sur Qse (de sarp0878) dans la session 29 a été supprimée.

11. L’imprimante Auto hp deskjet 840c series sur Qse (de sarp0878) dans la session 29 a été créée.

12. L’imprimante Auto hp deskjet 840c series sur Qse (de sarp0878) dans la session 29 a été supprimée.

13. L’imprimante Auto hp deskjet 840c series sur Qse (de sarp0878) dans la session 29 a été supprimée.

14. L’imprimante Auto hp deskjet 840c series sur Qse (de sarp0878) dans la session 29 a été créée.





Le client se demande pourquoi une même imprimante est créées ou supprimée ??? moi aussi. En recoupant par rapport à vos réponse concernant les problèmes que je rencontre sur le profil Ctx_SmaUser, je me demande si ce n’est pas lié ???



En tout cas, encore merci à vous tous pour la qualité de vos argumentations :slight_smile:

oui c’est lié effectivement



pour éviter de polluer un event log, ajoute la clef HKLMSoftwareCitrixPrintDefaultPrnFlags 0x8000000 (http://support.citrix.com/article/CTX107059)

Lorsque la taille du profil ctx_smauser explose, est-ce que la clé de registre suivante est pleine d’imprimantes :

[HKEY_USERSSID_compte_SMAPrinters]

Dans ce cas, il doit être “possible” de savoir quelle imprimante peut poser problème et charger le compte.

Franchement, pour avoir perdu beaucoup de temps sur ce problème, je ne peux pas en en accord avec toi Thin :-* . Même sans erreurs du cpsvc, même avec un user ctx_smauser admin local (donc avec les droit qui vont bien),

Ce profil explose le page spool ! IL N’EST SIMPLEMENT PAS PURGE, c’est tout, il faut faire avec point barre. J’ai même tenté de vider les enregistrements du profils, mais l’espace disque utiliser par le ntuser.dat ne change pas. Il faut arrivé a faire comme un Shrink en SQL. Un outil de chez sysinternals fais ca. Mais dans notre cas il ne sert a rien. Le profil est vide et occupe 120Mo (par ex) de page spool.



Donc je me répète, c’est soit RM/script soit Windows 2003.

"chavers" wrote:
Franchement, pour avoir perdu beaucoup de temps sur ce problème, je ne peux pas en en accord avec toi Thin :-* . Même sans erreurs du cpsvc, même avec un user ctx_smauser admin local (donc avec les droit qui vont bien),
Ce profil explose le page spool ! IL N'EST SIMPLEMENT PAS PURGE, c'est tout, il faut faire avec point barre. J'ai même tenté de vider les enregistrements du profils, mais l'espace disque utiliser par le ntuser.dat ne change pas. Il faut arrivé a faire comme un Shrink en SQL. Un outil de chez sysinternals fais ca. Mais dans notre cas il ne sert a rien. Le profil est vide et occupe 120Mo (par ex) de page spool.

Donc je me répète, c'est soit RM/script soit Windows 2003.
Chavers, je supposes qu tu as tout tenté, mais as tu essayé de regarder le contenu du ntuser.dat chargé en registre, afin de savoir quelle ruche peut grossir de façon aussi importante.
"jolebarjo" wrote:
"chavers" wrote:
Franchement, pour avoir perdu beaucoup de temps sur ce problème, je ne peux pas en en accord avec toi Thin :-* . Même sans erreurs du cpsvc, même avec un user ctx_smauser admin local (donc avec les droit qui vont bien),
Ce profil explose le page spool ! IL N'EST SIMPLEMENT PAS PURGE, c'est tout, il faut faire avec point barre. J'ai même tenté de vider les enregistrements du profils, mais l'espace disque utiliser par le ntuser.dat ne change pas. Il faut arrivé a faire comme un Shrink en SQL. Un outil de chez sysinternals fais ca. Mais dans notre cas il ne sert a rien. Le profil est vide et occupe 120Mo (par ex) de page spool.

Donc je me répète, c'est soit RM/script soit Windows 2003.
Chavers, je supposes qu tu as tout tenté, mais as tu essayé de regarder le contenu du ntuser.dat chargé en registre, afin de savoir quelle ruche peut grossir de façon aussi importante.

Le ntuser.dat est une ruche !? le HKCU du ctx_smauser

le domaine est migré en 2003 on viens de signer la recette ;D

mais les serveurs resterons en 2000 jusqu’à l’année prochaine >:(

"chavers" wrote:
"jolebarjo" wrote:
"chavers" wrote:
Franchement, pour avoir perdu beaucoup de temps sur ce problème, je ne peux pas en en accord avec toi Thin :-* . Même sans erreurs du cpsvc, même avec un user ctx_smauser admin local (donc avec les droit qui vont bien),
Ce profil explose le page spool ! IL N'EST SIMPLEMENT PAS PURGE, c'est tout, il faut faire avec point barre. J'ai même tenté de vider les enregistrements du profils, mais l'espace disque utiliser par le ntuser.dat ne change pas. Il faut arrivé a faire comme un Shrink en SQL. Un outil de chez sysinternals fais ca. Mais dans notre cas il ne sert a rien. Le profil est vide et occupe 120Mo (par ex) de page spool.

Donc je me répète, c'est soit RM/script soit Windows 2003.

Chavers, je supposes qu tu as tout tenté, mais as tu essayé de regarder le contenu du ntuser.dat chargé en registre, afin de savoir quelle ruche peut grossir de façon aussi importante.

Le ntuser.dat est une ruche !? le HKCU du ctx_smauser
Ah moins de dire une immense connerie, il me semble !

@jolebarjo



dans Regedt32 quand tu charge la ruche du ctx_smauser, c’est bien son ntuser.dat que tu prend, et c’est bien son HKU qui est monté ??? ou est le probleme.