Partager via


Procédure : créer, modifier et changer un calculateur de score d’intégrité de style compartiment

Dernière modification : vendredi 17 septembre 2010

S’applique à : SharePoint Foundation 2010

Cette rubrique explique comment créer, remplacer et modifier des calculateurs de scores d’intégrité de style compartiment qui sont associés avec des analyseurs de performance dans Microsoft SharePoint Foundation.

Important

L’exemple de cette rubrique utilise une application console. Quel que soit le type du projet, il est très important de définir l’infrastructure .NET Framework et l’unité centrale cible corrects. Le projet doit cibler Microsoft .NET Framework 3.5 (et non pas Microsoft .NET Framework 4). L’unité centrale cible doit être Tout processeur ou x64. Pour plus d’informations sur le choix, voir Procédure : définir le Framework et l’unité centrale cibles adéquats. L’unité centrale cible est généralement x86 par défaut. Pour la changer, cliquez avec le bouton droit sur le nom du projet dans l’Explorateur de solutions et sélectionnez Propriétés. Vous pouvez changer l’unité centrale sur l’onglet Version en utilisant la liste déroulante Plateforme cible.

Pour démarrer la solution Visual Studio

  1. Créez un projet d’application console dans Visual Studio et définissez l’infrastructure .NET Framework et la plateforme d’unité centrale cible.

  2. Ajoutez une référence à Microsoft.SharePoint.dll au projet. Le fichier se trouve dans ISAPI %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\.

  3. Ouvrez le fichier program.cs, définissez un espace de noms et un nom de classe appropriés, et ajoutez des instructions using pour les espaces de noms Microsoft.SharePoint, Microsoft.SharePoint.Administration et Microsoft.SharePoint.Utilities. Votre code doit maintenant se présenter comme suit :

    using System;
    using Microsoft.SharePoint; 
    using Microsoft.SharePoint.Administration;
    using Microsoft.SharePoint.Utilities;
    
    namespace Contoso.SharePoint.Utilities
    {
        class HealthCalculatorsUtility
        {
            static void Main(string[] args)
            {
    
            }// end Main
        }
    }
    
  4. Continuez avec une des procédures exposées plus loin dans cette rubrique.

Remplacement d’un calculateur de score d’intégrité

Si vous voulez remplacer un calculateur de score d’intégrité associé à un analyseur par un autre calculateur qui a des limites de compartiments différentes et éventuellement changer également le classement des valeurs du compartiment de croissant en décroissant, ou l’inverse, utilisez la procédure suivante.

Pour remplacer le calculateur de score d’intégrité associé à un analyseur

  1. Dans la méthode Main, déclarez un tableau de valeurs Double qui définit les limites des compartiments qu’utilise le calculateur de score d’intégrité de remplacement pour affecter des scores d’intégrité aux valeurs. Les compartiments sont des sous-plages de valeurs possibles des compteurs. Il existe des restrictions sur la façon dont ce tableau doit être déclaré. Pour des détails sur les restrictions, voir la procédure « Pour ajouter un Analyseur de performances » dans Procédure : inscrire un compteur de performance ou annuler l’inscription. Le code suivant montre la déclaration d’un tableau qui est destiné à créer des compartiments pour le compteur Windows Server 2008 appelé « Processeur\% Temps processeur ». Ce compteur indique le pourcentage de temps que les processeurs du serveur passent sur des processus autres que le processus inactif du système. Pour plus d’informations sur ce compteur, voir Objet processeur (éventuellement en anglais).

    double[] busyProcessorBuckets = new double[10] {20.0, 28.8, 37.6, 46.4, 55.2, 64.0, 72.8, 81.6, 90.4, 99.2}; 
    
  2. Appelez le constructeur SPBucketHealthScoreCalculator et passez l’objet tableau de compartiments en tant que paramètre. Passez true ou false comme second paramètre, selon que le tableau est classé par ordre croissant ou décroissant, respectivement. Le code suivant est la suite de l’exemple.

    SPBucketHealthScoreCalculator nonIdleTimeHealthCalculator = new SPBucketHealthScoreCalculator(busyProcessorBuckets, true);
    
  3. Dans la méthode Main, obtenez une référence à l’application Web, puis obtenez une référence aux paramètres d’accélération en appelant la méthode GetHttpThrottleSettings(SPPersistedObject). C’est ce que montre l’exemple suivant :

    Uri webApplicationUri = new Uri("Http://localhost/");
    SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri);
    SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
    
  4. Dans la méthode Main, obtenez une référence à la collection persistante d’objets SPPerformanceMonitorCreationData. (Les objets Analyseur de performances réels [SPSystemPerformanceCounterMonitor] sont créés au moment de l’exécution à partir de ces objets de données de création stockés.)

    SPHttpThrottlingMonitors myMonitors = throttleSettings.PerformanceMonitors;
    
  5. Toujours dans la méthode Main, obtenez une référence à l’instance particulière de l’Analyseur de performances dont vous voulez remplacer le calculateur de score d’intégrité et affectez sa propriété AssociatedHealthScoreCalculator au nouveau calculateur. Dans certains cas, vous connaissez au moment de la conception l’index de l’Analyseur dans la collection. Le plus souvent, votre code l’identifie par la catégorie, le compteur et le nom d’instance, comme dans l’exemple suivant. Notez que Update() est appelé pour enregistrer les modifications apportées à la base de données de configuration.

    foreach (SPPerformanceMonitorCreationData creationData in myMonitors)
    {
        if (creationData.Category.Equals("Processor", StringComparison.OrdinalIgnoreCase)
            & creationData.Counter.Equals("% Processor Time", StringComparison.OrdinalIgnoreCase) 
            & creationData.Instance.Equals("0", StringComparison.OrdinalIgnoreCase))
        {
            creationData.AssociatedHealthScoreCalculator = nonIdleTimeHealthCalculator;
            throttleSettings.Update();
            break;
        }
    }
    

Modification des limites des compartiments

Il n’est pas nécessaire de remplacer la totalité du calculateur de score d’intégrité qui est associé à un Analyseur si vous ne devez changer que les limites des compartiments. Si les nouvelles limites correspondent au classement croissant ou décroissant des limites existantes, vous pouvez utiliser la méthode SetScoreBuckets([]) pour changer les limites.

Pour modifier les limites des compartiments

  1. Dans la méthode Main, déclarez un tableau de valeurs Double définissant les nouvelles limites des compartiments. Les compartiments sont des sous-plages de valeurs possibles des compteurs. Il existe des restrictions sur la façon dont ce tableau doit être déclaré. Pour des détails sur les restrictions, voir la procédure « Pour ajouter un Analyseur de performances » dans Procédure : inscrire un compteur de performance ou annuler l’inscription. Le code suivant montre la déclaration d’un tableau qui est destiné à créer des compartiments pour le compteur Windows Server 2008 appelé « Processeur\% Temps processeur ». Cependant, contrairement aux compartiments définis dans la section Remplacement d’un calculateur de score d’intégrité plus haut dans cette rubrique, ce tableau définit un ensemble de valeurs susceptible de croître de façon exponentielle.

    double[] busyProcessorBuckets = new double[5] {5.0, 10.0, 20.0, 40.0, 80.0}; 
    
  2. Au lieu de créer un nouvel objet calculateur, obtenez une référence au calculateur existant que vous voulez modifier puis effectuez une conversion de type vers la classe qui représente les calculateurs de style compartiment. Les étapes sont les mêmes que dans la section Remplacement d’un calculateur de score d’intégrité plus haut dans cette rubrique. Le code suivant montre le résultat des étapes :

    Uri webApplicationUri = new Uri("Http://localhost/");
    SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri);
    SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
    
    SPHttpThrottlingMonitors myMonitors = throttleSettings.PerformanceMonitors;
    
    foreach (SPPerformanceMonitorCreationData creationData in myMonitors)
    {
        if (creationData.Category.Equals("Processor", StringComparison.OrdinalIgnoreCase)
            & creationData.Counter.Equals("% Processor Time", StringComparison.OrdinalIgnoreCase) 
            & creationData.Instance.Equals("0", StringComparison.OrdinalIgnoreCase))
        {
            SPBucketHealthScoreCalculator bucketScoreCalculator = 
              (SPBucketHealthScoreCalculator)creationData.AssociatedHealthScoreCalculator;
    
        }
    }
    
  3. Toujours dans la structure if, appelez la méthode SetScoreBuckets([]) de l’objet de données de création d’Analyseur et passez le nouveau tableau de compartiments. Assurez-vous d’appeler Update() pour enregistrer la modification.

    bucketScoreCalculator.SetScoreBuckets(busyProcessorBuckets);
    throttleSettings.Update();
    break;
    

Voir aussi

Concepts

Limitation des requêtes