Charge serveur bloqué sur 10000

Aujourd’hui nous sommes tombés (avec notre collègue Corvette man) sur un problème de charge à 10000 sur un serveur XenApp 6.5 (Sp1 R01 US), au passage le serveur n’avait aucun calculateur de type maintenance. 

Le calculateur de charge affecté sur ce serveur prenait en compte la CPU/Mémoire et le nombre de session, aucun de ces 3 critères (ni-même l’indice de charge) ne permettait de définir une charge à 10000. 


En regardant de plus près nous avons remarqué qu’il manquait des compteurs dans le perfmon du serveur (‘erreur : Unable to add these counters).


En googlelant nous sommes tombés sur la KB2554336 qui corrige ce type de problème.

Nous avons effectué les actions suivantes (vu qu’aucun compteurs n’étaient désactivés) :

  • Allez dans le menu Démarrer-Executé et lancer la commande c:\windows\system32\lodctr /R
  • Allez dans le menu Démarrer-Executé et lancer la commande c:\windows\sysWOW64\lodctr /R
  • Allez dans le menu Démarrer-Executé et lancer la commande WINMGMT.EXE /RESYNCPERF
  • Redemarrer le service Windows Management Instrumentation service
  • Redémarrer le service ImaService

Une fois ces étapes réalisées, les compteurs perfmon manquants étaient disponibles et notre serveur a retrouvé sa charge réel.

Post to Twitter

Script : Application d’un calculateur de charge en fonction du type de serveur

Récemment dans plusieurs fermes XenApp 6.5 R01 nous avons eu besoin d’appliquer un calculateur de charge (Load Evaluator) sur tous les serveurs dont le calculateur de charge est “Défaut” (et on en avait un max 🙂 ) .

Au passage nous en profitons pour appliquer un calculateur de charge en fonction du type de serveur (Virtuel ou physique).

Dans notre cas les calculateurs de charges sont paramétrés via des Groupes de taches (Worker Groups), un pour les serveurs virtuels et un pour les serveurs physiques.

Comme d’hab ça passe par un script Powershell.

Pré-requis :
– Deux calculateurs de charge configurés en fonction du type de serveur (Virtuel ou Physique)
– Deux stratégies ordinateur, chacune pointant sur un des calculateurs de charge.
– Deux groupes de taches permettant le filtrage des stratégies

 


Xa6_AttribLE.ps1



Xa5_AttribLE.ps1
Pour XenApp 5 (le script reste le même sans les parties Worker Groups et GPupdate)

Post to Twitter

Script : lister les serveurs d’un calculateur de charge

Quoi de plus utile qu’un calculateur de charge de “maintenance” permettant d’isoler un ou plusieurs serveurs de leurs applications publiées ceci afin de pouvoir effectuer des mises à jour (ou autres) sans supprimer ces mêmes serveurs de leurs applications publiées.

Une fois ces serveurs en “maintenance”, les administrateurs peuvent avoir besoin de savoir quels sont les serveurs concernés par cette maintenance (dans notre cas plusieurs fermes administrées par plusieurs administrateurs)

Le script powershell (merci à CloudyDude pour le tips du formatage) ci-dessous va lister les serveurs appartenant au calculateur de charge “maintenance”, puis enverra un mail aux administrateurs avec la liste de ces serveurs (l’idéal étant de mettre ce script en tâche planifiée)

$farm = Get-XAFarm
$LoadEval = “MAINTENANCE”
$XA_Load = get-xaserver -LoadevaluatorName $LoadEval | Select ServerName | sort ServerName| out-string


$emailFrom = “CTX-” +$farm +”@domain.fr”
$emailTo = “email
@domain.fr
$subject = “Farm : ” +$farm + ” – Server(s) in Load Evaluator ” +$LoadEval
$body = $XA_Load
$smtpServer = “VotreSmtp”
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

Post to Twitter

Lister la charge des serveurs avec une exclusion sur un calculateur de charge.

Un script bien pratique et disponible sur Citrix Community, permet de lister les serveurs dont la charge est supérieure à 9000 (valeur paramétrable) : List Server Load and send Alert by Email.

Ce script vous permet de connaître la liste de vos serveurs les plus chargés, le résultat étant envoyé par mail (l’idéal étant de le faire via une tâche planifiée).

Si comme nous, vous avez un calculateur de charge de “MAINTENANCE” (calculateur qui pousse la charge à 10000 sur un serveur via la règle planification), vous allez rapidement obtenir la liste des vos serveurs réellement chargés plus ceux qui sont en maintenance.

Pour récupérer le calculateur de charge des serveurs,  nous avons utilisé la commande : AttachedLE.

Set anLE = objServer.AttachedLE
anLE.Loaddata(True)

Nous avons donc modifié le script QueryServerLoad_CTX.wsf comme ci-dessous afin d’exclure le calculateur de charge MAINTENANCE :

 

En rouge les lignes rajoutées dans le script.

 

rajouter à la ligne 84 :
Set anLE = objServer.AttachedLE

Rajouter à la ligne 85 :
anLE.Loaddata(True)

Rajouter à la ligne 88 (cette ligne est un commentaire):
‘exlusion des serveurs qui ont le calculateur de charge MAINTENANCE   

Rajouter à la ligne 89 :
if anLE.LEName = “MAINTENANCE” then

Rajouter à la ligne 91 :
else

Rajouter à la ligne 106 :
End if

Désormais le script fera une exclusion de vos serveurs qui sont en maintenance.

Afin de recevoir le mail d’alerte il faut paramétrer la partie SenEmail (ligne 116) 😉 .

Post to Twitter