パフォーマンス評価についてのヒント
システム内のイベントや通知の流れを監視して、Microsoft SQL Server Notification Services の状態を評価します。システムを監視するときは、以下の点を確認します。
- イベントが着信し、イベント プロバイダがそれを収集していること。以下の監視ツールを使用できます。
- Windows イベント ビューア
- パフォーマンス オブジェクト NS$instance_name: Event Providers オブジェクト および NS$instance_name: Events オブジェクト のパフォーマンス カウンタ
- ストアド プロシージャ NSEventBatchList (Transact-SQL)、NSSnapshotEvents (Transact-SQL)、および NSSnapshotProviders (Transact-SQL)
- ジェネレータがクォンタムをスキップせずに、適切な時期にイベント バッチを処理して通知を生成していること。以下の監視ツールを使用できます。
- イベント ビューア
- パフォーマンス オブジェクト NS$instance_name: Events オブジェクト および NS$instance_name: Generator オブジェクト のパフォーマンス カウンタ
- ストアド プロシージャ NSNotificationBatchList (Transact-SQL)、NSSnapshotApplications (Transact-SQL)、および NSQuantumsSkipped (Transact-SQL)
- 通知が通知テーブルに蓄積され、ディストリビュータが通知の書式設定を行い、配信チャネルに配信していること。以下の監視ツールを使用できます。
- イベント ビューア
- NS$instance_name: Notifications オブジェクト のパフォーマンス カウンタ
- ストアド プロシージャ NSNotificationBatchList (Transact-SQL) および NSSnapshotDeliveryChannels (Transact-SQL)
- 書式設定された通知が外部配信システムで受信および配信されていること。以下の監視ツールを使用できます。
- イベント ビューア
- NS$instance_name: Notifications オブジェクト のパフォーマンス カウンタ
- ストアド プロシージャ NSDiagnosticFailedNotifications (Transact-SQL)
- アプリケーション定義ファイル (ADF) で設定したスケジュールで無効データ削除プロセスが実行されていること。以下の監視ツールを使用できます。
- イベント ビューア
- NS$instance_name: Vacuumer オブジェクト のパフォーマンス カウンタ
- ストアド プロシージャ NSSnapshotApplications (Transact-SQL)
- CPU およびディスクが許容範囲内で適切に稼動していること。詳細については、「CPU 使用率の監視」および「ディスクの使用量の監視」を参照してください。
- データベース ファイルとログ ファイルがいっぱいにならず、頻繁に自動拡張されたり、空き領域が不足しないこと。詳細については、「SQL Server: Databases オブジェクト」を参照してください。
アプリケーションの動作に問題がある場合は、「Notification Services のトラブルシューティング」を参照してください。
実稼動アプリケーションの監視
サブスクライバは情報の同時配信を希望する傾向があるため、また、大きなイベント バッチは毎日同時刻に着信することが多いため、一般的に Notification Services アプリケーションには、ピーク期間と無処理期間があります。このため、ピーク期間にアプリケーションを監視し、パフォーマンスの基準を確立して、時間の経過と共にパフォーマンスを比較することは非常に重要です。
稼動中のアプリケーションの場合は、重要なパフォーマンス カウンタを常時監視し、オペレータにパフォーマンスの低下を通知する警告を設定しておく必要があります。Microsoft Windows パフォーマンス ツールの機能であるパフォーマンス ログと警告を使用して警告を設定できます。
パフォーマンスの問題点に対する対応
パフォーマンスの問題点を見つけたときは、使用できるあらゆるツールを使用して問題点の原因を判断します。以下に、パフォーマンスの問題点に対して有効と思われる対処方法を示します。
- ルール (イベント記録ルール、サブスクリプション イベント ルール、定期的なサブスクリプション ルール) にインデックスを設定して、アプリケーションをチューニングします。
- Notification Services に必要なリソースが一時的にロックされる場合があるので、処理のピーク期間にはインスタンス データベースおよびアプリケーション データベースに対してアドホック クエリを実行しないようにします。
- 配信を行うのに適切な CPU リソースを確保します。通常は CPU に依存します。
- 通知を配信するサーバーやサービスに対するサーバーの帯域幅が十分であることを確認します。
- アプリケーションのパフォーマンスが最適になるようにチューニングします。アプリケーションをチューニングするには、アプリケーション定義ファイルのいくつかの要素を調整する必要が生じる場合があります。特に、ApplicationExecutionSettings 要素内の要素がその対象になります。
- データベース ファイル、ログ ファイル、および tempdb データベースを 3 つのそれぞれ独立した物理ディスクに配置します。データベース システムで通知を生成するパフォーマンスは、ディスク リソースによる制限を受けることがよくあります。
パフォーマンスに問題がある場合、パフォーマンス カウンタを確認し、レポートを使用し、アプリケーション ログを調査してエラーの種類を確認したうえで問題点を切り分けることが重要になります。
参照
概念
監視ツールの選択
Notification Services パフォーマンス オブジェクト
パフォーマンス ログと警告の使用
レポートを使用したパフォーマンスの分析
アプリケーションの実行設定の指定
その他の技術情報
Notification Services のエラーおよびイベント