SPMonitoredScope の使用
最終更新日: 2013年1月16日
適用対象: SharePoint Foundation 2010
この記事の内容
SPMonitoredScope を使用して行う操作
SPMonitoredScope の使用方法
計算が表示される場所
SPMonitoredScope のその他の使用方法
パフォーマンスに関する考慮事項
ベスト プラクティス
制限事項
前のリリースの Windows SharePoint Services では、パフォーマンスまたは信頼性に関する原因不明の問題が発生したときに、その問題を切り離して原因を特定するのが難しい場合がありました。そして、エラーが発生したポイントやパフォーマンスのボトルネックの特定に、開発者が膨大な時間を費やすことは珍しくありませんでした。
Microsoft SharePoint Foundation 2010 に導入された SPMonitoredScope クラスを使用すると、開発者がコードの一部を指定して、統合ログ サービス (ULS) のログおよび開発者ダッシュボードの利用状況の統計を監視できます。詳細については、「開発者ダッシュボードの使用」を参照してください。
SPMonitoredScope を使用して行う操作
開発者は次の操作を行うときに、SPMonitoredScope を使用できます。
過剰なリソース使用を特定する。
パフォーマンスのボトルネックを特定する。
あるコンポーネントが他のコンポーネントをどのように操作しているかを確認する。
SPMonitoredScope の使用方法
SPMonitoredScope クラスは Microsoft.SharePoint.Utilities 名前空間にあります。
SPMonitoredScope は非常に使いやすく、開発者は、監視するコードのセクションを "ラップ" するだけです。すると、コードの実行時に、測定された統計が ULS ログと開発者ダッシュボードに書き込まれます。これにより、その統計が存在するコンポーネントおよびページに関する情報を、開発者およびシステム管理者が直ちに利用できるようになります。
ラップされたコードの例を次に示します。
using (new SPMonitoredScope("My Scope Name"))
{
doSomeWork();
}
計算が表示される場所
カスタム コードで SPMonitoredScope が使用されるときに、統計が ULS ログおよび開発者ダッシュボードに書き込まれます。
SPMonitoredScope のその他の使用方法
他のリソース使用状況を監視する
SPMonitoredScope を使用すると、コードの指定されたセクションで、他の種類のリソース使用状況を測定することもできます。
たとえば、次のコード例では、実行時間、要求数、および外部コールアウトによって実行された SharePoint SQL Server クエリの数 (クエリ テキストを含む) を測定しログに記録します。
using (new SPMonitoredScope("My Scope Name",TraceSeverity.Verbose,1000,
new SPRequestUsageCounter(3),
new SPSqlQueryCounter()))
{
callExternalCode();
}
パフォーマンスのしきい値を使用する
SPMonitoredScope を使用して、過剰なリソース使用が検出された場合にのみ動的にトレースすることもできます。
上記の例では、callExternalCode() メソッドは 1000 ms を超えていなので、3 SPRequest のみを割り当てるということが範囲に通知されています。この制限を超えた場合、この範囲のトレース レベルは、このインスタンスに対して "高" に設定され、ダッシュボードのカウンターは赤で表示されます。
パフォーマンスに関する考慮事項
SPMonitoredScope を使用してコードをラップするという処理がパフォーマンスに及ぼす影響はわずかです。ただし、SPMonitoredScope によってラップされているコードのセクションに多数の反復処理 (SharePoint Foundation 2010 Web サービスにより返された XML ノードによる反復処理など) を実行したループが含まれる場合は、開発者ダッシュボードに含まれるコール スタックによってサイズが急激に大きくなり、表示された情報を解読するのが困難になる可能性があることに気を付ける必要があります。
ベスト プラクティス
SPMonitoredScope を最も効率的に使用するためのヒントを次に示します。
- カスタム データベース、外部 Web サービスなど、外部コンポーネントへのすべての呼び出しを SPMonitoredScope でラップすることをお勧めします。これにより、管理者がエラー ポイントとしてそれを識別し、問題をすばやく切り離すことができます。
制限事項
SPMonitoredScope を使用する場合、制限事項がいくつか存在することに注意してください。
SharePoint データベースへの呼び出しのみが取り込まれます。
フロントエンド Web サーバー上の SPMonitoredScope でラップされたコードのみが開発者ダッシュボードに表示されます。アプリケーション サーバーで実行されているコードでは、そのコードが実行されているコンピューターの ULS ログにのみ SPMonitoredScope 情報を表示します。