vendredi 8 octobre 2010

Une opération de processing semble bloquée sur mon instance AS 2005

J'ai récemment constaté un problème de blocage des processing de cube AS. Dans un premier temps, on a tendance à penser que le processing dure juste plus longtemps qu'à l'accoutumé. Mais quand ça fait 12h que ça tourne pour une opération qui prend en temps normal 1h, y’a quand même de quoi se poser des questions.
En observant les compteurs de performance, on constate que, dans mon cas, l’instance est toujours en train de calculer les indexes de mes partitions, et ça fait longtemps que ça dure :











Courbe verte : nombre de lignes lues
Courbe bleue : nombre de lignes "processées"
Courbe verte : nombre de lignes écrites
Courbe jaune : Nombre de partitions pour lesquelles les indexes et les agrégations sont en cours de calcul (axe des ordonnées de droite)


Et dans le même temps, au niveau de la consommation processeur, on constate que plus grand chose ne se passe, ce qui n'est absolument pas normal étant donné que généralement, les étapes d'indexation/agrégation sont les plus consommatrices de ressources CPU au cours du processing :





Courbe verte : conso CPU en %
 
Ce cas de figure se présente surtout sur les grosses configurations serveur en 64 bits. Un article de Wayne Robertson ici explique parfaitement le pourquoi du comment.
C'est en fait un problème d'attribution de threads à AS lorsque leur nombre dépasse la valeur de la propriété ThreadPool Process Max. Il existe une manière empirique pour calculer la valeur à imposer à cette propriété, et elle est également expliquée dans l'article ci-dessus. Je vais quand même la rappeler ici :
Faire la somme des valeurs des compteurs de performance suivants (valeurs relevées pendant le hang du processing) :
  • Processing Pool Idle Threads
  • Processing Pool Busy Threads
  • Processing Pool Job Queue Length
Remarque : attention toute fois à la modification de ce paramètre. D'autres propriétés d'AS sont à prendre en compte afin de maintenir l'équilibre du système. Des infos sont disponibles dans le très bon livre blanc Performance guide que vous trouverez ici (cf page 65 : Executing Processing jobs).

Et pour aller plus loin, un chapitre tout entier est consacré à la gestion des threads dans le livre SQL Server 2008 Analysis Services Unleashed (chapitre 28, p 521).

Aucun commentaire:

Enregistrer un commentaire