Compartir a través de


Procedimiento para crear, modificar y cambiar una calculadora de puntuación de mantenimiento de estilo cubo

Última modificación: viernes, 17 de septiembre de 2010

Hace referencia a: SharePoint Foundation 2010

En este tema se explica cómo crear, reemplazar y modificar las calculadoras de puntuación de mantenimiento de estilo cubo asociadas con los monitores de rendimiento de Microsoft SharePoint Foundation.

Nota importanteImportante

En el ejemplo de este tema se usa una aplicación de consola. Independientemente del tipo de proyecto, es importante establecer la CPU y el .NET Framework de destino correctos. El proyecto debe orientarse a Microsoft .NET Framework 3.5 (no a Microsoft .NET Framework 4). La CPU de destino debe ser cualquier CPU o x64. Para obtener información acerca de la elección, vea el tema Procedimiento para establecer el marco de destino y CPU correctos. La CPU de destino es generalmente x86 de forma predeterminada. Para cambiarla, haga clic con el botón secundario en el nombre del proyecto en Explorador de soluciones y seleccione Propiedades. Puede cambiar la CPU en la ficha Compilación mediante la lista desplegable Destino de la plataforma.

Para iniciar la solución de Visual Studio

  1. Cree un proyecto de aplicación de consola en Visual Studio y establezca la plataforma de CPU y .NET Framework de destino.

  2. Agregue una referencia al Microsoft.SharePoint.dll del proyecto. Se encuentra en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI.

  3. Abra el archivo program.cs, establezca un espacio de nombres y nombre de clase adecuados y agregue instrucciones using para los espacios de nombres Microsoft.SharePoint, Microsoft.SharePoint.Administration y Microsoft.SharePoint.Utilities. Ahora su código debería asemejarse al siguiente:

    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. Continúe con uno de los procedimientos que aparecen más adelante en este artículo.

Reemplazo de una calculadora de puntuación de mantenimiento

Si desea reemplazar la calculadora de puntuación de mantenimiento asociada con un monitor por una nueva que tenga límites de cubos diferentes y, posiblemente, que también cambie el orden de los valores de cubo de ascendente a descendente, o viceversa, use el siguiente procedimiento.

Para reemplazar la calculadora de puntuación de mantenimiento asociada con un monitor

  1. En el método Main, declare una matriz de valores Double que defina los límites de los cubos que usa la calculadora de puntuación de mantenimiento de reemplazo para asignar la puntuación de mantenimiento a los valores. Los cubos son subconjuntos de posibles valores del contador. Existen restricciones con respecto al modo en que debe declararse esta matriz. Para obtener detalles acerca de las restricciones, vea el procedimiento "Para agregar un monitor de rendimiento" en el tema Procedimiento para registrar o eliminar del Registro un contador de rendimiento. En el siguiente código se muestra una declaración de una matriz pensada para crear cubos para el contador de Windows Server 2008 denominado "Procesador\% de tiempo de procesador". Este contador informa del porcentaje de tiempo que los procesadores del servidor tardan en procesar otros procesos además del proceso inactivo del sistema. Para obtener más información acerca de este contador, vea el tema sobre el objeto de procesador.

    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. Llame al constructor SPBucketHealthScoreCalculator y pase el objeto de matriz de cubo como parámetro. Pase true o false para el segundo parámetro en función de si la matriz es ascendente o descendente, respectivamente. En el siguiente código continúa el ejemplo.

    SPBucketHealthScoreCalculator nonIdleTimeHealthCalculator = new SPBucketHealthScoreCalculator(busyProcessorBuckets, true);
    
  3. En el método Main, obtenga una referencia a la aplicación web y, posteriormente, a la configuración de límite mediante una llamada al método GetHttpThrottleSettings(SPPersistedObject), tal y como se muestra en el siguiente ejemplo.

    Uri webApplicationUri = new Uri("Http://localhost/");
    SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri);
    SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
    
  4. En el método Main, obtenga una referencia a la colección guardada de objetos SPPerformanceMonitorCreationData. (Los objetos del monitor de rendimiento reales [SPSystemPerformanceCounterMonitor] se crean en tiempo de ejecución a partir de estos objetos de datos de creación almacenados.)

    SPHttpThrottlingMonitors myMonitors = throttleSettings.PerformanceMonitors;
    
  5. Todavía en el método Main, obtenga una referencia a la instancia específica del monitor de rendimiento cuya calculadora de puntuación de mantenimiento desea reemplazar y asigne la nueva calculadora a su propiedad AssociatedHealthScoreCalculator. En algunos casos, se sabe en tiempo de diseño el índice del monitor de la colección. Con mayor frecuencia, el código lo identifica por categoría, contador y nombre de instancia como se muestra en el siguiente ejemplo. Tenga en cuenta que se llama a Update() para guardar los cambios en la base de datos de configuración.

    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;
        }
    }
    

Modificación de los límites de los cubos

No es necesario reemplazar la calculadora de puntuación de mantenimiento completa asociada con un monitor si solo se necesitan cambiar los límites de los cubos. Si los nuevos límites coinciden con el orden ascendente o descendente de los límites existentes, puede usar el método SetScoreBuckets([]) para cambiar estos límites.

Para modificar los límites de los cubos

  1. En el método Main, declare una matriz de valores Double que definan los nuevos límites de los cubos. Los cubos son subconjuntos de posibles valores del contador. Existen restricciones con respecto al modo en que debe declararse esta matriz. Para obtener detalles acerca de las restricciones, vea el procedimiento "Para agregar un monitor de rendimiento" en el tema Procedimiento para registrar o eliminar del Registro un contador de rendimiento. En el siguiente código se muestra una declaración de una matriz pensada para crear cubos para el contador de Windows Server 2008 denominado "Procesador\% de tiempo de procesador". Pero, a diferencia de los cubos definidos en la sección Reemplazo de una calculadora de puntuación de mantenimiento anteriormente en este tema, esta matriz define un conjunto de valores exponencialmente ascendente.

    double[] busyProcessorBuckets = new double[5] {5.0, 10.0, 20.0, 40.0, 80.0}; 
    
  2. En lugar de crear un nuevo objeto de calculadora, obtenga una referencia a la calculadora existente que desea modificar y conviértala en la clase que representa las calculadoras de estilo cubo. Los pasos son los mismos que en la sección Reemplazo de una calculadora de puntuación de mantenimiento que aparece anteriormente en este tema. En el código siguiente se muestra el resultado de los pasos:

    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. Todavía en la estructura if, llame al método SetScoreBuckets([]) del objeto de datos de creación del monitor y pase la nueva matriz de cubo. Asegúrese de llamar a Update() para guardar el cambio.

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

Vea también

Conceptos

Limitación de solicitudes