システムレベルのボトルネック
このトピックでは、BizTalk Server ソリューションのパフォーマンスに影響を与える可能性がある一般的なシステム レベルのボトルネックに対処する方法について説明します。
ベースライン構成のスナップショットの作成
次の情報を収集すると、システム レベルのボトルネックの修正に役立つベースライン構成のスナップショットを得ることができます。
ドキュメントを収集する
シナリオのアーキテクチャとインフラストラクチャのドキュメントを確認します。
ベースライン セキュリティ アナライザーを実行する
ベースライン セキュリティ アナライザーを実行するには、次の手順に従います。
ドメイン管理者アカウントを使用して、BizTalk ServerとSQL Serverコンピューターをホストしているのと同じネットワーク上のコンピューターにログオンします。
現在のコンピューター (たとえば、BizTalk Server コンピューターまたは別のコンピューター) に Microsoft Baseline Security Analyzer をインストールします。
個別のスキャン (スキャンの開始) を実行し、各BizTalk ServerおよびSQL Serverコンピューターの名前または IP アドレスをパラメーターとして指定します。
%userprofile%\SecurityScans ディレクトリから各セキュリティ レポート (.mbsa ファイル) をコピーします。
BizTalk Server ベスト プラクティス アナライザーを実行する
BizTalk Serverベスト プラクティス アナライザーを実行するには、次の手順に従います。
BizTalk Server Administrator セキュリティ グループの一部であるユーザー アカウントを使用して、BizTalk Server ノードにログオンします。
現在のコンピューターにBizTalk Serverベスト プラクティス アナライザーをインストールします。
ツールを実行し、レポートを保存します。
MSInfo32 を実行して結果を保存する
MSInfo32 を実行するには、次の手順に従います。
ドメインまたはローカル管理者アカウントを使用して、各BizTalk Serverにログオンし、コンピューター SQL Serverします。
コマンド プロンプトを起動し、コンピューターの %windir%\system32 ディレクトリにディレクトリを変更します。
コマンド プロンプトから MSinfo32.exe を実行します。
[ ファイル ] メニューをクリックし、[ エクスポート ] メニュー項目を選択してエクスポートし、コンピューターの構成を保存します。
BizTalk ServerとSQL Server コンピューターの TCP/IP レジストリ設定をエクスポートします。
次の手順に従って、BizTalk Serverを保存し、TCP/IP レジストリ設定をSQL Serverします。
コマンド プロンプトを起動し、コンピューターの %windir%\system32 ディレクトリにディレクトリを変更します。
コマンド プロンプトから Regedit.exe を実行します。
レジストリで次のキーに移動します。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] (network settings)
このキーを右クリックし、[ エクスポート ] を選択してレジストリ キーをファイルにエクスポートします。
BizTalk 構成ファイルを収集する
各BizTalk Server ノードで、BizTalk Server インストール フォルダー (C:\Program Files\Microsoft BizTalk Server 2010 など) にあるBizTalk Server構成ファイル (64 ビット ホストの場合は BTSNTSvc64.exe.config) を BTSNTSvc.exe.config します。
.NET 構成ファイルを収集する
各BizTalk Server ノードで、machine.config を収集し、4.0 構成ファイルを web.config .NET Framework します。 構成ファイルは、次の場所にあります。
32 ビットの場合: %windir%\Microsoft.NET\Framework\v4.0.30319\CONFIG フォルダー
64 ビットの場合: %windir%\Microsoft.NET\Framework64\v4.0.30319\CONFIG フォルダー
BizTalk MsgBoxViewer ツールを使用して MessageBox データベースに関する情報を収集する
BizTalk MsgBoxViewer ツールを使用して MessageBox データベースに関する情報を収集するには、次の手順に従います。
BizTalk ヘルス モニターで使用できる BizTalk MsgBoxViewer ツールをダウンロードします。
BizTalk Server管理者セキュリティ グループの一部であるユーザー アカウントを使用して、BizTalk Server コンピューターにログオンします。
MsgBoxViewer.exe をBizTalk Server コンピューターにコピーします。
ツールを起動します。
[ 収集するオプションの情報 ] タブをクリックし、[ すべての情報の選択] をクリックします。
[ 開始] をクリックして収集します。
[状態] ラベルに [コレクションの終了 ] メッセージが表示されたら、MsgBoxViewer.exe 実行可能ファイルを含むフォルダーに切り替え、結果のレポート (.htm) とログ ファイルをコピーします。
ソリューションで使用されるすべてのコンポーネントのソース コードを収集して格納する
すべてのコンポーネント (オーケストレーション、カスタム パイプライン コンポーネント、ヘルパー コンポーネント コードなど) のソース コードを別のファイル共有に格納します。
初期のトラブルシューティング
BizTalk Server ソリューションには、BizTalk ソリューションの全体的なサイズや設計に関係なくパフォーマンスの問題を引き起こす特定のコンポーネントがあります。有効になっていない場合は、パフォーマンスの問題が発生します。 BizTalk ソリューションの包括的なボトルネック分析に従事する前に、"通常の容疑者" の一部を除外するために、次の予備的なトラブルシューティング タスクを完了する必要があります。
追跡ホスト インスタンスが実行されていることを確認する - Tracking ホスト インスタンスは、BAM と HAT の両方のデータを MessageBox データベースの TrackingData テーブルから BizTalkDTADb または BAMPrimaryImport データベース テーブルに移動します。 追跡ホスト インスタンスが実行されていない場合、追跡データは MessageBox データベースに蓄積され、BizTalk Server ソリューションのパフォーマンスに悪影響を与えます。
Enterprise Single Sign-On (ENTSSO) サービスがすべてのBizTalk Server コンピューターで実行されていることを確認します。BizTalk ホスト インスタンスは、ENTSSO サービスのローカルで実行されているインスタンスへの依存関係を維持します。 ENTSSO サービスがBizTalk Serverで実行されていない場合、サーバー上のホスト インスタンスはどちらも実行できません。
SQL Server エージェント サービスがすべてのSQL Server コンピューターで実行されていることを確認します。BizTalk SQL Server エージェント ジョブを実行するには、SQL Server エージェント サービスが実行されている必要があります。 これらのジョブは、サーバーの動作と正常を維持するために重要な機能を実行します。
BizTalk SQL Server エージェント ジョブが有効で、例外なしで実行されていることを確認する - SQL Server エージェント サービスが実行されている場合でも、既定のすべての BizTalk SQL Server エージェント ジョブが有効で正常に実行されていることが不可欠です。
BizTalk ServerとSQL Serverイベント ログを確認する - BizTalk ServerまたはSQL Serverイベント ログをカーソルで調べると、診断と解決にかなりの時間がかかる可能性がある問題が明らかになる可能性があります。
BizTalk Serverベスト プラクティス アナライザーを実行する - BizTalk Serverベスト プラクティス アナライザーは、BizTalk Server展開を調べ、ベスト プラクティス標準に関連する問題の一覧を生成します。 このツールは、Windows Management Instrumentation (WMI) クラス、SQL Server データベース、レジストリ エントリなど、さまざまな情報ソースからデータを収集することで、構成レベルの検証を実行します。 その後、データを使用してデプロイ構成を評価します。 ツールは読み取りとレポートのみを行い、システム設定は変更せず、セルフチューニング ツールではありません。 BizTalk Serverベスト プラクティス アナライザーをダウンロードします。
システムの高レベルのボトルネック
このセクションでは、BizTalk Server ソリューションに存在する可能性があるシステム レベルのボトルネックと、考えられる軽減戦略について説明します。
ディスク I/O のボトルネック
ディスク I/O とは、物理ディスクまたはサーバーにインストールされている複数のディスクでアプリケーションによって実行される読み取り操作と書き込み操作の数を指します。 ディスク I/O および関連するボトルネックを引き起こす可能性がある一般的なアクティビティには、実行時間の長いファイル I/O 操作、データの暗号化と復号化、データベース テーブルからの不要なデータの読み取り、物理メモリの不足が含まれます。これにより、過剰なページング アクティビティが発生する可能性があります。 ディスク速度は、ディスク I/O のボトルネックを評価する際に考慮すべきもう 1 つの要因です。ディスクの高速化により、パフォーマンスが向上し、ディスク I/O のボトルネックを軽減できます。
次の表は、BizTalk Server ソリューションのディスク サブシステムを計画する際に考慮すべき要素を示しています。
ディスク サブシステム係数 | 詳細 |
---|---|
ディスク メモリ キャッシュと使用可能な物理メモリ | 物理メモリが制限されると、メモリはディスクにキャッシュされるため、十分な量のメモリが使用可能であることを確認してください。 メモリが不足している場合は、ディスクに書き込まれるページが増え、ディスク アクティビティが増加します。 また、ページング ファイルを適切なサイズに設定してください。 追加のディスク メモリ キャッシュは、ディスク I/O 要求のピークをオフセットするのに役立ちます。 ただし、大きなディスク メモリ キャッシュでは、スピンドルが十分でないという問題はほとんど解決されず、十分なスピンドルを持つことは、大きなディスク メモリ キャッシュの必要性を否定する可能性があります。 最適なパフォーマンスを得るために Windows ページング ファイルを構成する方法については、 オペレーティング システムのパフォーマンスの最適化に関するトピックの「最適なパフォーマンスのために Windows PAGEFILE を構成する」セクションを参照してください。 |
ストレージ コントローラーの種類 | バッテリーベースのキャッシュがある場合は、書き込みキャッシュを有効にして、トランザクション ログ ファイル ボリュームとデータベース ボリュームのディスク書き込みパフォーマンスを向上させます。 書き込みキャッシュでは、書き込みキャッシュが有効になっていない応答時間が 10 から 20 ミリ秒ではなく、書き込み I/O 要求の応答時間は 2 ミリ秒になります。 書き込みキャッシュを有効にすると、クライアントの書き込み要求の応答性が大幅に向上します。 読み取りキャッシュは、トランザクション ログ ファイルでのみ発生するシーケンシャル ディスク読み取りにのみ役立つため、BizTalk Serverシナリオではパフォーマンスが向上しません。 トランザクション ログ ファイルは、データベースの復元後やサーバーが適切にシャットダウンされていない場合など、それらが再生されている場合にのみ読み取られます。 キャッシュが大きくなると、より多くのデータをバッファーに格納できます。つまり、飽和期間が長くなる可能性があります。 コントローラーでキャッシュ ページ サイズを構成できる場合は、4 KB に設定する必要があります。 8 KB などのサイズを大きくすると、4 KB の I/O 要求で 8 KB のキャッシュ ページ全体が占有され、使用可能なキャッシュが半分に削減されるため、キャッシュが無駄になります。 |
スピンドル | スピンドルは容量よりも重要であり、スピンドルが多数のランダム I/O 要求をサポートしている場合、BizTalk Serverパフォーマンスが向上します。 スピンドルの故障が発生した場合でも十分な I/O を使用できるように、合計使用率を 80% 以下にすることを計画します。 |
Raid | 使用する RAID ソリューションは、環境に適したコストとパフォーマンスのトレードオフに基づく必要があります。 そのため、特定のデータ ストレージ要件に対して複数の種類の RAID ソリューションが推奨される場合があります。 一般的な推奨事項は次のとおりです。 - BizTalk Server データベースには Raid-1+0 (ミラー化されたセット内のストライプ セット) を使用します。 - トランザクション ログ ファイル ボリュームには、Raid-1 (パリティなしでミラー化されたセット) を使用します。 - 一般に、Raid 5 は他の Raid 構成と比較して最適な信頼性、可用性、パフォーマンスを提供しないため、Raid 5 (分散パリティを持つストライプ セット) は推奨されません。 - 永続的なデータ損失の可能性があるため、raid-0 (パリティのないストライプ セット) 構成は、BizTalk Server運用環境では使用しないでください。 |
バスの種類 | スループットが高いほど、パフォーマンスが向上します。 一般に、SCSI バスは IDE または ATA バスよりもスループットとスケーラビリティを向上させます。 次の式を使用して、バスの種類の理論上のスループット制限を決定できます。 (バス速度 (ビット単位) / バイトあたり 8 ビット)X 動作速度 (MHz) = スループット (MB/秒) 複数のドライブを個別の I/O バスに配置することで、ディスク I/O パフォーマンスを向上させることもできます。 |
ディスク I/O ボトルネックを測定するためのパフォーマンス カウンター
Note
ディスク パフォーマンスのボトルネックを分析する場合は、常に物理ディスク カウンターを使用する必要があります。 ただし、ソフトウェア RAID を使用する場合は、論理ディスク カウンターを使用する必要があります。 論理ディスク カウンターと物理ディスク カウンターに関しては、これらのカウンター オブジェクトごとに同じカウンターを使用できます。 論理ディスク・データはボリューム・マネージャー (またはマネージャー) によって追跡され、物理ディスク・データはパーティション・マネージャーによって追跡されます。
システムでディスク I/O 関連のボトルネックが発生しているかどうかを判断するには、次のパフォーマンス カウンターを使用する必要があります。
PhysicalDisk\Avg. Disk Queue Length
しきい値: スピンドルの数に 2 を加えた値より大きくしないでください。
基準値: このカウンターは、サンプル間隔中に選択したディスクに対してキューに登録された読み取りと書き込みの両方の要求の平均数を示します。 このカウンターは、データ バーストやピーク負荷など、コンカレンシー データを収集する場合に便利です。 これらの値は、統計情報を取得するドライバーの下にある、飛行中の要求の数を表します。 つまり、要求は必ずしもキューに入っているわけではありませんが、実際にはサービスに入っているか完了し、パスをバックアップする途中である可能性があります。 飛行中の可能性のある場所は次のとおりです。
SCSIport または Storport キュー
OEM ドライバー キュー
ディスク コントローラー キュー
ハード ディスク キュー
ハード ディスクからのアクティブな受信
PhysicalDisk\Avg.Disk Read Queue Length
しきい値: 2 未満にする必要があります。
基準値: このカウンターは、サンプル間隔中に選択したディスクに対してキューに登録された読み取り要求の平均数を示します。
PhysicalDisk\Avg.Disk Write Queue Length
しきい値: 2 未満にする必要があります。
基準値: このカウンターは、サンプル間隔中に選択したディスクに対してキューに登録された書き込み要求の平均数を示します。
PhysicalDisk\Avg. Disk sec/Read
しきい値: 特定の値はありません。
10 ミリ秒未満 (ms) = 良好
15 ~ 25 ms = fair
25 ミリ秒を超える = 低品質
基準値: このカウンターは、ディスクからのデータ読み取り操作の平均時間 (秒単位) を示します。 数値が 25 ミリ秒 (ミリ秒) を超える場合は、ディスクから読み取るときにディスク システムに待機時間が発生していることを意味します。 BizTalk Serverをホストするミッション クリティカルなサーバーの場合、許容されるしきい値は約 10 ミリ秒と大幅に低くなります。
PhysicalDisk\Avg. Disk sec/Write
しきい値: 特定の値はありません。
10 ミリ秒未満 (ms) = 良好
15 ~ 25 ms = fair
25 ミリ秒を超える = 低品質
基準値: このカウンターは、ディスクへのデータ書き込み操作の平均時間 (秒単位) を示します。 数値が 25 ミリ秒を超えると、ディスクへの書き込み時にディスク システムの待機時間が発生します。 BizTalk Serverをホストするミッション クリティカルなサーバーの場合、許容されるしきい値は約 10 ミリ秒と大幅に低くなります。
PhysicalDisk\Avg. Disk sec/Transfer
しきい値: 18 ミリ秒を超えてはなりません。
基準値: このカウンターは、平均ディスク転送の時間 (秒単位) を示します。 これは、大量のディスクの断片化、低速ディスク、またはディスクの障害を示している可能性があります。 物理ディスク\Avg ディスク秒/転送カウンターと Memory\Pages/sec カウンターの値を乗算します。 これらのカウンターの積が 0.1 を超える場合、ページングにはディスク アクセス時間の 10% を超える時間がかかるため、より多くの物理メモリを使用できる必要があります。
PhysicalDisk\Disk Writes/sec
しきい値: 製造元の仕様によって異なります。
基準値: このカウンターは、ディスクに対する書き込み操作の速度を示します。
Processor\% DPC Time、% Interrupt Time、および % Privileged Time - 割り込み時間と遅延プロシージャ コール (DPC) 時間が特権時間の大部分である場合、カーネルは I/O 要求の処理にかなりの時間を費やしています。 場合によっては、マルチプロセッサ システム上の少数の CPU に割り込みと DPC アフィニティを構成することでパフォーマンスを向上させることができます。これにより、キャッシュの局所性が向上します。 それ以外の場合は、割り込みと DPC アクティビティがボトルネックにならないように、割り込みと DPC を多数の CPU に分散するのが最適です。 割り込みフィルター構成ツールを使用して、マルチプロセッサ コンピューター上の特定のプロセッサにネットワーク アダプターの割り込みをバインドする方法については、「 オペレーティング システムのパフォーマンスの最適化」の「割り込みフィルター構成ツールを使用して、ネットワーク アダプターの割り込みをマルチプロセッサ コンピューター上の特定のプロセッサにバインドする」セクションを参照してください。
Processor\DPC Queued /sec - DPC が CPU 時間とカーネル リソースをどのように消費しているかを測定します。
Processor\Interrupts / sec - 割り込みによって CPU 時間とカーネル リソースがどのように消費されているかを測定するもう 1 つの測定。 最新のディスク コントローラーでは、多くの場合、割り込みを結合または結合して、1 つの割り込みが複数の I/O 完了の処理を行います。 もちろん、割り込みの遅延 (つまり完了) と CPU 処理時間の節約にはトレードオフがあります。
ディスク I/O チューニング オプション
ディスク I/O が環境内のボトルネックであると判断した場合は、次の手法を使用してボトルネックを軽減できます。
ディスクの最適化 -PageDefrag ユーティリティで使用可能な を使用して、Windows ページング ファイルを最適化し、マスター ファイル テーブルを事前に割り当てます。
ストライプ セットを使用して複数のディスクで同時に I/O 要求を処理する - ミラー化ボリュームを使用してフォールト トレランスを提供し、I/O パフォーマンスを向上させます。 フォールト トレランスが不要な場合は、高速な読み取りと書き込みを行い、ストレージ容量を向上させるためにストライプ セットを実装します。 ストライプ セットを使用すると、ボリューム全体に作業が分散され、全体的なスループットが向上するため、ディスクあたりの使用率が低下します。 ストライプ セットにディスクを追加してもスループットが向上しない場合は、ディスク コントローラーによるディスク間の競合により、システムでボトルネックが発生している可能性があります。 この場合、ディスク コントローラーを追加すると、負荷の分散とパフォーマンスの向上に役立ちます。
複数のドライブ間でワークロードを分散する - Windows クラスタリングと分散ファイル システムでは、複数のディスク ドライブで負荷分散を行うためのソリューションが提供されます。
ファイルの圧縮または暗号化の使用を制限する - ファイルの圧縮と暗号化は、I/O 負荷の高い操作です。 絶対に必要な場合にのみ使用してください。
短い名前の作成を無効にする - Windows 3.x クライアントで MS-DOS をサポートしていない場合は、短い名前を無効にしてパフォーマンスを向上させます。 短い名前の作成を無効にする方法の詳細については、「 オペレーティング システムのパフォーマンスの最適化」の「短いファイル名 (8.3) 生成を無効にする」セクションを参照してください。
最後のアクセス更新を無効にする - 既定では、NTFS はディレクトリを通過するたびに、ディレクトリの最後のアクセスの日付と時刻のスタンプを更新します。 NTFS ボリュームが大きい場合、この更新プロセスによってパフォーマンスが低下する可能性があります。 最後のアクセス更新プログラムを無効にする方法の詳細については、「 オペレーティング システムのパフォーマンスの最適化」の「NTFS の最終アクセス更新プログラムを無効にする」セクションを参照してください。
注意事項
一部のアプリケーション (増分バックアップ ユーティリティなど) は NTFS 更新情報に依存しており、それなしでは正しく機能しません。
マスター ファイル テーブルの適切な領域を予約する - NTFS ボリュームに通常格納されるファイルの数に応じて、 NtfsMftZoneReservation エントリをレジストリに追加します。 このエントリをレジストリに追加すると、システムはマスター ファイル テーブルのボリューム上の領域を予約します。 この方法で領域を予約すると、マスター ファイル テーブルを最適に拡張できます。 通常、NTFS ボリュームに比較的少数のファイルが格納されている場合は、このレジストリ エントリの値を既定値の 1 に設定します。 通常、NTFS ボリュームに中程度の数のファイルが格納されている場合は 2 または 3 の値を使用し、NTFS ボリュームに比較的多くのファイルが含まれる傾向がある場合は 4 (最大値) の値を使用できます。 ただし、これらの値が大きいほど、システムはマスター ファイル テーブルのディスクの大部分を予約するため、必ず 2 より大きい設定をテストしてください。 NtfsMftZoneReservation をレジストリに追加する方法の詳細については、「オペレーティング システムのパフォーマンスの最適化」の「マスター ファイル テーブルで使用できる領域を増やす」を参照してください。
最も効率的なディスク システムを使用する - 使用される物理ディスクに加えて、使用されるディスク コントローラーとケーブル接続の種類を検討してください。 効率的なディスク サブシステムには、ディスク I/O によって発生するプロセッサ割り込みアクティビティを軽減するために、割り込みモデレーションまたは割り込みの回避をサポートするドライバーも用意する必要があります。
適切な RAID 構成を使用していることを確認します。 最適なパフォーマンスとフォールト トレランスを実現するには、RAID 10 (ストライピングとミラーリング) を使用します。 トレードオフとして、RAID 10 を使用するとコストが高くなります。 広範な書き込み操作がある場合は、RAID 5 を使用しないでください。 BizTalk Server環境での RAID の実装の詳細については、「BizTalk Server データベースの最適化」の「ディスク インフラストラクチャ」セクションを参照してください。
データベース パーティションの使用を検討する - データベースのボトルネックがある場合は、データベース パーティションを使用し、ディスクを特定のテーブルとトランザクション ログにマッピングすることを検討してください。 パーティションの主な目的は、大きなテーブルのディスクのボトルネックを克服することです。 行数が多いテーブルがあり、それがボトルネックの原因であると判断した場合は、パーティションの使用を検討してください。 SQL Serverでは、ファイル グループを使用して I/O パフォーマンスを向上させることができます。 テーブルをファイル グループに関連付け、ファイル グループを特定のハード ディスクに関連付けることができます。 BizTalk Server データベースのファイル グループの最適化の使用の詳細については、「データベースのファイル グループの最適化」を参照してください。
ページフォールトが過剰な場合は、物理メモリの追加を検討してください-メモリ: Pages/sec パフォーマンス カウンターの値が高い場合は、ディスク I/0 が増加する過剰なページングを示している可能性があります。 このような場合は、物理メモリを追加してディスク I/O を削減し、パフォーマンスを向上することを検討してください。
RPM 評価が高いディスクを使用するか、記憶域ネットワーク (SAN) デバイスを使用することを検討してください。 RPM 定格が高いディスクは、RPM 定格が低いディスクと比較してパフォーマンスが向上します。 SAN デバイスは通常、最上位レベルのパフォーマンスを提供しますが、価格は Premium です。
「データベースパフォーマンスの最適化」の推奨事項に従ってください。 このトピックでは、BizTalk Serverの構成前と構成後の両方でデータベースのパフォーマンスを最適化するための推奨事項をいくつか紹介します。
CPU のボトルネック
サーバー上で実行される各アプリケーションは、CPU のタイム スライスを取得します。 CPU は、コンピューター上で実行されているすべてのプロセスを効率的に処理できる場合や、過負荷になる可能性があります。 プロセッサ アクティビティと、スレッドの作成、スレッドの切り替え、コンテキストの切り替えを含む個々のプロセスのアクティビティを調べることで、プロセッサのワークロードとパフォーマンスに関する分析情報を得ることができます。
CPU のボトルネックが発生している可能性があります。...
Processor\% Processor Time パフォーマンス カウンターの値は、多くの場合、75% を超えています。
System\ Processor Queue Length パフォーマンス カウンターの値は、一定期間 2 つ以上です。
Processor\% Privileged Time または System\Context Switches/sec パフォーマンス カウンターの値が異常に高くなっています。
Processor\ % Processor Time パフォーマンス カウンターの値が高い場合は、キューが発生し、ほとんどのシナリオでは System\ Processor Queue Length の値も高くなります。
CPU ボトルネックを測定するためのパフォーマンス カウンター
システムで CPU 関連のボトルネックが発生しているかどうかを判断するには、次のパフォーマンス カウンターを使用する必要があります。
Processor\% Processor Time
しきい値: 85% 未満にする必要があります。
意味: このカウンターは、プロセッサ アクティビティの主要なインジケーターです。 高い値の多くは必ずしも悪いとは限りません。 ただし、 Processor\% Privileged Time や System\Processor Queue Length など、プロセッサ関連の他のカウンターが直線的に増加している場合は、高い CPU 使用率を調査する価値があります。
Processor\% Privileged Time
しきい値: 一貫して 75% を超える数値は、ボトルネックを示します。
有意性: このカウンターは、スレッドが特権モードで実行される時間の割合を示します。 アプリケーションがオペレーティング システム関数を呼び出すとき (ファイルまたはネットワーク I/O の実行やメモリの割り当てなど)、これらのオペレーティング システム関数は特権モードで実行されます。
Processor\% Interrupt Time
しきい値: プロセッサによって異なります。
有意性: このカウンターは、プロセッサがハードウェア割り込みの受信とサービスに費やした時間の割合を示します。 この値は、ネットワーク アダプターなどの割り込みを生成するデバイスのアクティビティの間接的なインジケーターです。 このカウンターの大幅な増加は、潜在的なハードウェアの問題を示しています。
System\Processor キューの長さ
しきい値: 一貫して 2 より高い平均値は、ボトルネックを示します。
意味: プロセッサよりも多くのタスクを実行する準備ができている場合は、スレッドがキューに登録されます。 プロセッサ キューは、別のスレッドが現在実行されているため、準備はできてもプロセッサで実行できないスレッドのコレクションです。 2 つ以上のスレッドの持続キューまたは繰り返しキューは、プロセッサのボトルネックを明確に示しています。 このような場合は並列処理を減らすことで、スループットが向上する可能性があります。
このカウンターを Processor\% Processor Time カウンターと組み合わせて使用して、アプリケーションがより多くの CPU を利用できるかどうかを判断できます。 マルチプロセッサ コンピューターでも、プロセッサ時間のキューは 1 つあります。 したがって、マルチプロセッサ コンピューターでは、プロセッサ キューの長さ (PQL) の値を、ワークロードにサービスを提供するプロセッサの数で除算します。
CPU が非常にビジー状態 (使用率が 90% 以上) で、PQL 平均がプロセッサあたり 2 より一貫して高い場合は、CPU の追加の利点を得られる可能性のあるプロセッサのボトルネックが発生する可能性があります。 または、アプリケーション レベルでスレッドとキューの数を減らすことができます。 これにより、コンテキストの切り替えが少なくなり、CPU 負荷を減らすのに適したコンテキスト切り替えが少なくなります。 CPU 使用率が低い PQL 値が 2 以上の一般的な理由は、プロセッサ時間の要求がランダムに到着し、スレッドがプロセッサから不規則な時間を要求することです。 これは、プロセッサがボトルネックではなく、アプリケーションスレッドロジックを改善する必要があることを意味します。
System\Context Switches/sec
しきい値: 一般的なルールとして、プロセッサあたり 1 秒あたり 5,000 未満のコンテキスト切り替えレートは、心配する価値はありません。 コンテキスト切り替えレートがプロセッサあたり 1 秒あたり 15,000 を超える場合、コンテキストの切り替えがボトルネックになる可能性があります。
意味: コンテキストの切り替えは、優先度の高いスレッドが現在実行中の優先度の低いスレッドを割り込む場合、または優先度の高いスレッドが他のスレッドをブロックしたときに発生します。 高レベルのコンテキスト切り替えは、多くのスレッドが同じ優先度レベルを共有している場合に発生する可能性があります。 これは、多くの場合、システム上のプロセッサと競合するスレッドが多すぎることを示しています。 プロセッサ使用率とコンテキスト切り替えレベルの両方が低い場合、これは多くの場合、スレッドがブロックされていることを示します。
CPU ボトルネックの解決
最初の手順では、過剰なプロセッサ時間を消費しているプロセスを特定します。 [プロセス] ページの [CPU] 列を見て、Windows タスク マネージャー を使用して、高レベルの CPU を消費している プロセス を特定します。 これを確認するには、パフォーマンス モニターで Process\%Processor Time を監視し、監視するプロセスを選択します。
過剰な CPU 時間を消費しているプロセスを特定するためのもう 1 つの強力なツールは、Visual Studio Team System (VSTS) スイートで使用できる Visual Studio Team System Profiler です。 Visual Studio Team System Profiler の使用の詳細については、Visual Studio Team System のドキュメントを参照してください。
CPU がボトルネックであると判断した後は、次のようないくつかのオプションがあります。
マルチスレッド アプリケーションがある場合は、複数のプロセッサを追加します。 アプリケーションがシングル スレッドの場合は、より強力なプロセッサにアップグレードすることを検討してください。
コンテキストの切り替え率が高い場合は、プロセッサの数を増やす前に、プロセスのスレッド数を減らすことを検討してください。
CPU 使用率が高い原因となっているアプリケーションを分析して調整します。 ADPLUS ユーティリティを使用して実行中のプロセスをダンプし、Windbg を使用して原因を分析できます。 これらのユーティリティは、Windows デバッグ ツールキットの一部です。 これらのツールは、 Windows 用デバッグ ツールからダウンロードできます。
アプリケーションによって生成されたインストルメンテーション ログを分析して、実行に最大時間がかかるサブシステムを分離します。 BizTalk Server環境のチューニングよりもコード レビューの方が有益かどうかを判断します。
Note
タスク マネージャーまたはコマンド プロンプトを使用して、アプリケーションのプロセス優先度レベルを変更することはできますが、通常は避ける必要があります。
メモリのボトルネック
メモリ関連のボトルネックを評価する場合は、不要な割り当て、非効率的なクリーン、不適切なキャッシュと状態管理メカニズムを検討してください。 メモリ関連のボトルネックを解決するには、コードを最適化してこれらの問題を排除し、アプリケーションに割り当てられているメモリの量を調整します。 チューニング中にメモリの競合と過剰なページングが発生していると判断した場合は、サーバーに物理メモリを追加する必要がある場合があります。 メモリが不足すると、ディスクとの間でアプリケーションの仮想アドレス空間のページングが増加します。 ページングが過剰になると、ディスク I/O が増加し、システム全体のパフォーマンスに悪影響を与えます。
メモリのボトルネックが発生している可能性があります。...
Memory\Available MBytes パフォーマンス カウンターの値が小さいのは、システム メモリの制限またはメモリを解放していないアプリケーションのいずれかです。 実行中の各プロセスの Process\Working Set パフォーマンス カウンターの値を監視します。 プロセスがアクティブでなくても Process\Working Set の値が高いままの場合は、プロセスがメモリを解放していない可能性があります。
Memory\Pages/sec パフォーマンス カウンターの値が高くなっています。 Memory\Pages Input/sec の平均を Memory\Page Reads/sec の平均で割った値は、ディスク読み取りあたりのページ数を指定します。 通常、この値は 1 秒あたり 5 ページを超えることはできません。 1 秒あたり 5 ページを超える値は、システムがページングに多くの時間を費やしており、(アプリケーションが最適化されていると仮定して) より多くのメモリを必要とすることを示します。
メモリのボトルネックを測定するためのパフォーマンス カウンター
システムでメモリ関連のボトルネックが発生しているかどうかを判断するには、次のパフォーマンス カウンターを使用する必要があります。
Memory\Available Mbytes
しきい値: インストールされている RAM の 20 ~ 25% 未満の一貫性のある値は、メモリ不足を示します。
意味: これは、コンピューターで実行されているプロセスで使用できる物理メモリの量を示します。 このカウンターには、最後に観測された値のみが表示されることに注意してください。 平均ではありません。
Memory\Page Reads/sec
しきい値: 5 を超える持続値は、読み取り要求のページ フォールトの数が多い場合を示します。
意味: このカウンターは、メモリがディスクにページングする原因となっている使用可能な物理メモリに対して、プロセスのワーキング セットが大きすぎることを示します。 各操作で取得されたページ数に関係なく、読み取り操作の数が表示されます。 値が大きいほど、メモリのボトルネックが示されます。
ページ読み取り操作の速度が低い場合、 物理ディスク\% ディスク時間 と物理ディスクの平均\ 平均ディスク キュー長の高い値と一致する場合、ディスク I/O ボトルネック状態が存在する可能性があります。 キューの長さの増加にページ読み取り速度の低下が伴わない場合は、物理メモリが不足しているためにメモリのボトルネックが発生します。
Memory\Pages/sec
しきい値: 5 を超える持続的な値は、ボトルネックを示します。
有意性: このカウンターは、ハード ページエラーを解決するためにページがディスクから読み取られたり、ディスクに書き込まれたりする速度を示します。 Physical Disk\Avg. Disk sec/Transfer および Memory\Pages/sec パフォーマンス カウンターの値を乗算します。 これらの値の積が 0.1 を超える場合、ページングはディスク アクセス時間の 10% を超えています。これは、物理メモリが不足していることを示します。
Memory\Pool Nonpaged Bytes
しきい値: Memory\Pool Nonpaged Bytes の値を監視して、システム起動時の値から 10% 以上増加します。
意味: 起動時の値から 10% 以上増加すると、メモリ リークが示される可能性があります。
Server\Pool の非ページ エラー
しきい値: 通常の 0 以外の値はボトルネックを示します。
有意性: このカウンターは、非ページ プールからの割り当てが失敗した回数を示します。 非ページ プールには、プロセス カーネル オブジェクト テーブルなど、ディスク上のページ ファイルにスワップアウトされないプロセスの仮想アドレス空間からのページが含まれています。 ページ以外のプールの可用性によって、作成できるプロセス、スレッド、およびその他のオブジェクトの数が決まります。 ページ以外のプールからの割り当てが失敗した場合、特にプロセッサの使用率がそれに応じて増加していない場合は、プロセス内のメモリ リークが原因である可能性があります。
Server\Pool Paged Failures
しきい値: 特定の値はありません。
有意性: このカウンターは、ページ プールからの割り当てが失敗した回数を示します。 このカウンターの正の値は、コンピューターに物理メモリが不足しているか、Windows ページング ファイルが小さすぎることを示します。
Server\Pool Nonpaged Peak
しきい値: 特定の値はありません。
意味: これは、サーバーが任意の時点で使用するために予約している非ページ プール内の最大バイト数です。 コンピューターに必要な物理メモリの量を示します。 ページ以外のプールは物理メモリに常駐している必要があり、他の操作のためにメモリが残っている必要があるため、経験則として、コンピューターは、このカウンターに示された値の 4 倍の物理メモリをインストールする必要があります。
Memory\Cache Bytes
しきい値: 特定の値はありません。
有意性: さまざまな読み込み条件下でキャッシュのサイズを監視します。 このパフォーマンス カウンターの値は、静的ファイル キャッシュのサイズを示します。 既定では、このカウンターは使用可能なメモリの約 50% を使用しますが、使用可能なメモリが縮小すると減少し、システムのパフォーマンスに影響します。
Memory\Cache Faults/sec
しきい値: 特定の値はありません。
意味: このカウンターは、オペレーティング システムがファイル システム キャッシュ内のデータを検索する頻度を示しますが、見つかりません。 値はできるだけ低くします。
Cache\MDL 読み取りヒット率
しきい値: この値が大きいほど、ファイル システム キャッシュのパフォーマンスが向上します。 値は、可能な限り 100% に近い値にする必要があります。
意味: このカウンターは、ハード ディスクからの読み取りを必要とするのではなく、直接オブジェクトを返すファイル システム キャッシュに対するメモリ記述子リスト (MDL) 読み取り要求の割合を提供します。
Process\Working Set
しきい値: 特定の値はありません。
意味: ワーキング セットは、現在メモリに読み込まれているメモリ ページのセットです (物理 + 仮想)。 システムに十分なメモリがある場合は、メモリをディスクにページングするディスク操作を実行する必要がないように、ワーキング セット内に十分な領域を保持できます。 ただし、メモリが不足している場合、システムはプロセスからメモリを取り除くことでワーキング セットを削減しようとします。これにより、ページ フォールトが増加します。 ページ フォールトの速度が上昇すると、システムはプロセスのワーキング セットを増やそうとします。 ワーキング セットの変動が大きければ、メモリ不足を示している可能性があります。 作業セットの値が高いほど、アプリケーション内の複数のアセンブリが原因である可能性もあります。 グローバル アセンブリ キャッシュで共有されるアセンブリを使用して、ワーキング セットを改善できます。
メモリのボトルネックの解決
メモリがBizTalk Server環境のボトルネックであると判断した場合は、次の 1 つ以上の方法を使用してボトルネックを解決します。
割り当てを制御できる場合は、割り当てられたメモリの量を調整します。 たとえば、BizTalk Server、ASP.NET、SQL Serverに合わせて調整できます。
Windows ページング ファイルのサイズを大きくし、「 オペレーティング システムのパフォーマンスの最適化」の「最適なパフォーマンスのために Windows PAGEFILE を構成する」セクションの手順に従います。
使用されていないサービスをオフにします。 定期的に使用しないサービスを停止すると、メモリが節約され、システムのパフォーマンスが向上します。 詳細については、「 オペレーティング システムのパフォーマンスの最適化」の「重要でないサービスを無効にする」セクションを参照してください。
不要なプロトコルとドライバーを削除します。 アイドル 状態のプロトコルでも、ページメモリ プールと非ページ メモリ プール内の領域が使用されます。 ドライバーもメモリを消費するため、不要なものを削除する必要があります。 詳細については、「 オペレーティング システムのパフォーマンスの最適化」の「不要なネットワーク プロトコルを削除する」セクションを参照してください。
BizTalk Server環境のコンピューターに追加の物理メモリをインストールします。
Note
32 ビット システムでは、BizTalk は最大 2 GB のメモリを使用できます。/3 GB スイッチを使用すると、2010 以降BizTalk Server 3 GB に制限が増加します。 メモリ使用量の詳細については、「 Windows リリースのメモリ制限」を参照してください。
ネットワーク I/O のボトルネック
ネットワーク I/O のボトルネックが発生している可能性があります。...
Network Interface\Bytes Total/sec パフォーマンス カウンターの値が、使用可能なネットワーク帯域幅の 80% を超えています。
Server\Bytes Total/sec パフォーマンス カウンターの値は、使用可能なネットワーク帯域幅の 50% を超えています。
ネットワーク I/O ボトルネックを測定するためのパフォーマンス カウンター
ネットワーク I/O を測定し、システムでネットワーク I/O 関連のボトルネックが発生しているかどうかを判断するには、次のパフォーマンス カウンターを使用する必要があります。
ネットワーク インターフェイス\バイト合計/秒
しきい値: ネットワーク容量の 80% を超える持続値。
有意性: このカウンターは、各ネットワーク アダプターでバイトが送受信される速度を示します。 このカウンターは、ネットワーク アダプターが飽和しているかどうか、および使用可能なネットワーク帯域幅を増やすために 1 つ以上のネットワーク アダプターを追加する必要があるかどうかを判断するのに役立ちます。
ネットワーク インターフェイス\受信バイト数/秒
しきい値: 特定の値はありません。
有意性: このカウンターは、各ネットワーク アダプターでバイトを受信する速度を示します。 このカウンターの値を使用して、使用可能な帯域幅の合計に対する割合として受信データのレートを計算します。 これは、BizTalk Serverにデータを送信するクライアントでネットワーク帯域幅を増やす必要があるかどうか、またはBizTalk Serverコンピューター自体でネットワーク帯域幅を増やす必要があるかどうかを判断するのに役立ちます。
ネットワーク インターフェイス\送信バイト数/秒
しきい値: 特定の値はありません。
有意性: このカウンターは、各ネットワーク アダプター経由でバイトが送信される速度を示します。 このカウンターの値を使用して、使用可能な帯域幅の合計に対する割合として送信データのレートを計算します。 これは、クライアントにデータを送信するBizTalk Serverでネットワーク帯域幅を増やす必要があるかどうか、またはBizTalk Serverからデータを受信するクライアント コンピューターでネットワーク帯域幅を増やす必要があるかどうかを判断するのに役立ちます。
Server\Bytes Total/sec
しきい値: ネットワーク容量の 50% を超える持続値。
有意性: このカウンターは、ネットワーク経由で送受信されたバイト数を示します。 値が大きいほど、ネットワーク I/O のボトルネックが示されます。 すべてのサーバーの 合計バイト数/秒 がネットワークの最大転送速度とほぼ等しい場合は、パフォーマンスを向上させるためにネットワークをサブネット化することを検討してください。 パフォーマンスを向上させるためのネットワークのサブネット化の詳細については、「BizTalk Server データベースの最適化」の「サブネット」セクションを参照してください。
ネットワーク I/O ボトルネックの解決
ネットワーク I/O が環境内のボトルネックであると判断した場合は、次の 1 つ以上の方法を使用してボトルネックを解決します。
「 ネットワーク パフォーマンスの最適化」の「ネットワーク パフォーマンスを向上させるための一般的なガイドライン」セクションの推奨事項に従ってください。
BizTalk Server環境の各コンピューターでネットワーク パフォーマンスの最適化に関するトピックで説明されている Windows Powershell ネットワーク最適化スクリプトを実行します。