次の方法で共有


パフォーマンス カウンターの登録と登録解除

最終更新日: 2011年3月3日

適用対象: SharePoint Foundation 2010

このトピックでは、Microsoft SharePoint Foundation パフォーマンス監視と HTTP 要求調整システムによる監視のために、Windows Server 2008 パフォーマンス カウンターを登録する方法と、システムからカウンターを削除する方法を説明します。

重要重要

このトピックの実行例では、コンソール アプリケーションが使用されます。プロジェクトの種類にかかわらず、正しいターゲットの .NET Framework と CPU を設定することが非常に重要です。このプロジェクトのターゲット .NET Framework は、Microsoft .NET Framework 3.5 である必要があります (.NET Framework 4 ではない)。ターゲット CPU は [Any CPU] または [x64] である必要があります。この選択については、「[方法] 適切なターゲット フレームワークおよび CPU を設定する」を参照してください。通常、ターゲット CPU は既定で [x86] になります。これを変更するには、ソリューション エクスプローラーでプロジェクト名を右クリックし、[プロパティ] を選択します。[ビルド] タブで [プラットフォーム ターゲット] ボックスの一覧を使って CPU を変更できます。

モニターおよび正常性スコア計算機能の永続性

HTTP 要求調整システムのパフォーマンス モニターは、システム インフラストラクチャにより、SPSystemPerformanceCounterMonitor オブジェクトとして、実行時に作成されます。このオブジェクトの 1 つが、Web アプリケーションの HttpThrottleSettings プロパティで、それ自体が持続的である SPHttpThrottleSettings オブジェクトの持続的な PerformanceMonitors プロパティの、各 SPPerformanceMonitorCreationData オブジェクトについて作成されます。ただし、コードは SPPerformanceMonitorCreationData クラスについてコンストラクターを呼び出しません。その代わりに、コードは SPHttpThrottleSettings.AddPerformanceMonitor() メソッドを呼び出します。このメソッドは SPPerformanceMonitorCreationData オブジェクトを構築して、PerformanceMonitors コレクションにそれを追加します。SPPerformanceMonitorCreationData クラスの重要なプロパティは AssociatedHealthScoreCalculator です。正常性スコア計算機能オブジェクトは、SPHttpThrottleSettings.AddPerformanceMonitor() メソッドでも作成されます。唯一、コードが SPBucketHealthScoreCalculator のためにコンストラクターを呼び出すのは、既に登録されたパフォーマンス モニターの既存の計算機能を置き替えるために、新しい計算機能を作成するときです。

Visual Studio ソリューションを作成するには

  1. Microsoft Visual Studio でコンソール アプリケーション プロジェクトを作成し、ターゲットの .NET Framework と CPU プラットフォームを設定します。

  2. Microsoft.SharePoint.dll への参照をプロジェクトに追加します。これは %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI にあります。

  3. program.cs を開き、適切な名前空間とクラス名を設定し、Microsoft.SharePoint、Microsoft.SharePoint.Administration、Microsoft.SharePoint.Utilities の各名前空間について using ステートメントを追加します。コードは次のようになります。

    using System;
    using Microsoft.SharePoint; 
    using Microsoft.SharePoint.Administration;
    using Microsoft.SharePoint.Utilities;
    
    namespace Contoso.SharePoint.Utilities
    {
        class PerformanceCounterRegistrar
        {
            static void Main(string[] args)
            {
    
            }
    // end Main
        }
    }
    

パフォーマンス モニターを追加するには

  1. Main メソッド内で、正常性スコア計算機能によって値への正常性スコアの割り当てに使用されるバケットの境界を定義する Double 値の配列を宣言します。バケットは、可能性のあるカウンター値の部分範囲です。この配列の宣言方法には以下の制限があります。

    • 要素の値は、最小から最大、あるいは最大から最小という順に、並んでいる必要があります。

    • また値は、最も正常から最も正常でない順に並んでいる必要があります。つまり、buckets が配列オブジェクトの名前であるとして、buckets[0] は buckets[1] より健全な値であり、buckets[1] は buckets[2] より健全な値といったようになります。つまり、buckets[buckets.Length-1] は常に buckets で最も正常でない値になる必要があります。

    パフォーマンス バケットを定義する配列の一般的な大きさである、10 の要素を持つ配列は、11 のバケットを作成します。buckets[0] より正常な値は最初のバケットにあり、buckets[10] より正常でない値は 11 番目のバケットにあります。正常性スコア計算機能は、値が属するバケットによって、値に (あるいは複数の値に対する関数の結果に) 対して正常性スコアを割り当てます。スコアは 0 から 10 までの Int32 です。最も正常なバケットの値は 0 に、最も正常でないバケットの値は 10 になります。配列は 10 より少ない要素を持つことができます。たとえば、仮想のパフォーマンス カウンターの可能な値が 0 から 50.0 (低い値が正常) までとし、10.0、20.0、30.0、および 40.0 をバケットの境界とします。このシナリオでは、標準の正常性スコア計算機能クラス、SPBucketHealthScoreCalculator のオブジェクトは、以下のルールに従って正常性スコアを生成します。

    • 10 より低いパフォーマンス値については 0

    • 10.0 と 20.0 の間の値については 3

    • 20.0 と 30.0 の間の値については 5

    • 30.0 と 40.0 の間の値については 8

    • 40.0 より多い値については 10

    バケット配列を構築する際に、監視されている少なくとも 1 つのカウンターが (カウンターの複数のサンプルの加重平均に基づいて) 10 のスコアを持っている場合に限り、要求調整システムが調整モードに入るということを念頭におくことが重要です。つまり、10 以下の要素を持つ配列については、配列の最後の要素の値を選択することが重要です。これは、正常性が極端に低下しており、一部の HTTP 要求をブロックすることを正当化するのに十分な値を示していなければなりません。同様に、20 の要素を持つ配列については、最後の要素の直前の要素より正常でない値は 10 としてスコア付けされます。

    注意

    配列はただ 1 つの要素を持つこともでき、この場合、単一の要素の値より正常でない値は正常性スコア 10 を取得し、すべてのその他の値は正常性スコア 0 を取得します。10 以下の値でないと調整が開始しないので、配列で複数の要素を持つ意味はありません。言いかえれば、なぜ "正常" と "異常" の 2 値の正常性スコアのシステムになっていないのか、ということです。その理由は、たとえそれが 10 以下で調整が行われない場合でも、HTTP 応答オブジェクトのヘッダーに最少の正常性カウンターの正常性スコアが追加されるためです。この値が、2 値以上の広い範囲の値で変化した場合は、クライアントは報告された値を使用して、ファームの正常性の傾向を確認することができます。またクライアント アプリケーションは、サーバーとの同期を向上するために正常性スコアを使用することができます。たとえば、クライアント アプリケーションは、より高い (正常でない) 正常性スコアに対しては、より長い同期間隔を設定することができます (いくつかの Microsoft Office アプリケーションはこれを行います)。その一方で、配列に 10 以上の要素を持つ理由はありません。正常性スコアは 11 の値しかないため、11 以上のバケットがあっても、複数の連続したバケットの値は、単に同じ正常性スコアを受け取るだけです。しかし、前に説明したように、10 より少ない要素を持つことは可能であり、ある種のパフォーマンス カウンターではそうすることが適切である可能性があります。

    次のコードは、"Processor\% Processor Time\_Total" という Windows Server 2008 カウンター用のバケットを作成するための配列の宣言を示しています。このカウンターは、サーバーのプロセッサが System Idle プロセス以外のプロセスに費やしている時間の割合を報告します。このカウンターの詳細については、「Processor Object (英語)」を参照してください。

    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 つの値の違いは同じですが、必ずしもそうなるとは限りません。ある種のカウンターでは、急激に増加する値を持つことが適当であることがあります。またこの例では、値が昇順であることに注意してください。ある種のパフォーマンス カウンターでは、値が大きいほど正常であることを示します。バケット配列は最も正常から最も正常でない順に並べられる必要があるため、このようなカウンターのバケット配列では値は降順である必要があります。

  2. 引き続き Main メソッド内で、Web アプリケーションへの参照を取得し、次に GetHttpThrottleSettings(SPPersistedObject) メソッドを呼び出すことによって調整設定への参照を取得します。これを次の例で示します。

    Uri webApplicationUri = new Uri("Http://localhost/");
    SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri);
    SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
    
  3. 引き続き Main メソッドで、SPHttpThrottleSettings.AddPerformanceMonitor() メソッドを呼び出し、カウンターの名前、そのカテゴリ、そのインスタンス、およびバケット配列をパラメーターとして渡します。配列が昇順であるか降順であるかに応じて、最後のパラメーターとして、それぞれ true または false を渡します。次のコードはこの実行例の続きです。

    throttleSettings.AddPerformanceMonitor("Processor",
                                           "% Processor Time",
                                           "_Total",
                                           busyProcessorBuckets,
                                           true);
    
    ヒントヒント

    SPHttpThrottleSettings.AddPerformanceMonitor() メソッドは、パフォーマンス モニターが、同じカウンターの同じインスタンスを既に監視しているかどうかを確認しません。メソッドを同じパラメーターで連続して呼び出すと、冗長なパフォーマンス カウンター オブジェクトが登録されます。

パフォーマンス カウンターが登録されていることを確認するには

  • Web アプリケーションのために登録されたパフォーマンス モニターのリストを取得するには、SharePoint 管理シェル コマンドレット、Get-SPWebApplicationHttpThrottlingMonitor を使用します。以下にコマンドレットへの呼び出しの構文を示します。

    Get-SPWebApplicationHttpThrottlingMonitor –identity http://<Web application URL>
    

    新たに登録されたパフォーマンス モニターの出力は、以下のようになります。

    Category                        : Processor
    Counter                         : % Processor Time
    Instance                        : _Total
    AssociatedHealthScoreCalculator : [20.0,28.8,37.6,46.4,55.2,64.0,72.8,81.6,90.4,99.2]
    

パフォーマンス カウンターを登録解除するには

  • パフォーマンス モニターを登録解除する操作は、コードが RemovePerformanceMonitor() を呼び出すこと以外は登録する操作に似ています。このメソッドの 1 つのオーバーロードにより、固有のカテゴリ、カウンター、およびインスタンス名を持つすべてのパフォーマンス カウンターが登録解除されます。2 番目のオーバーロードは、指定されたカテゴリとカウンター名を持つすべてのカウンターを登録解除するため、異なるモニターが固有のカウンターの異なるインスタンスを監視している場合は、それらのすべてを単一の呼び出しで削除することができます。以下の例は、RemovePerformanceMonitor() メソッドを使用して、モニターを削除する実行例を示します。

    Uri webApplicationUri = new Uri("Http://localhost/");
    SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri);
    SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
    
    // Remove the monitor. 
    throttleSettings.RemovePerformanceMonitor("Processor",
                                              "% Processor Time",
                                              "_Total");
    

関連項目

概念

要求の調整