ネットワークのボトルネックの解決法
ネットワークがボトルネックの場合の解決方法は,ネットワークのトラフィックをいかに減らすかという点に尽きる。そのためには,ほかのリソースボトルネックの場合と同様に,ハードウェアレベル,システムレベル,アプリケーションレベルで検討しなければならない。ハードウェアレベルで解決する場合には,ネットワーク設計の見直し,ネットワーク帯域幅の増強,トラフィックを分散させるためのネットワークセグメントの分割などの検討が必要となる。システムレベルで解決する場合には,プロトコルおよび関連パラメータのチューニングを検討する。また,Windows
NTの設定を調べて不要なトラフィックを発生させないように,あるいはトラフィックの発生頻度を少なくするように,再調整することも必要となるだろう。アプリケーションレベルで解決する場合には,論理データベース設計およびアプリケーション設計(特にクエリ設計)を見直す必要がある。具体的には,クライアントでの処理に必要な行および列のみをデータベースサーバーから返すようにアプリケーションを見直したり,インデックスの有用性を評価したりすることが必要となろう。
パフォーマンスモニタやネットワークモニタでネットワークのボトルネックを調査した結果,ネットワークの帯域を特定のアプリケーションプロセスが専有しているのであれば,そのアプリケーションの設計を見直して,トラフィックを削減するか,そのアプリケーションの稼働を別のオフピークの時間に移動する。ユーザーアプリケーションプロセス以外のWindows
NTサービスやネットワークプロトコルが原因であれば,それらを停止するか,設定を変更する必要がある。ネットワーク帯域を専有している特定のアプリケーションが存在しなければ,元々のネットワーク帯域幅が少ないのであるから,広帯域のネットワーク媒体に変更するか,セグメントを分けてトラフィックを分散させることが必要になる。
- ネットワークの利用率が30%(Ethernetの場合)を超え,そのトラフィックの大部分がSQL Serverへアクセスする通常のトラフィックであれば,不要な行あるいは列をネットワークに流さないようにアプリケーション設計およびインデックス設計を見直す。あるいは,ローカルにデータをキャッシュする
- ネットワークのボトルネックの原因がバルクコピー操作や,多量のテキストデータまたはイメージデータの送受信であれば,sp_configureシステムストアドプロシージャでnetwork packet sizeパラメータの値を変更し,TDS(Tabular Data Stream)パケットのサイズをデフォルトの4096バイトから8192バイト程度に拡張する。あるいは,運用時間を変更する
- データベースサーバーがSQL Server専用であれば,Windows NTの[コントロールパネル]から[ネットワーク]を実行して[サービス]パネルを開き,[ネットワークサービス]の一覧から[サーバー]を選択して[プロパティ]ボタンを押し,[サーバー]ダイアログボックスで[ネットワークアプリケーションのスループットを最大にする]を選択する
- SQL Serverの動作しているコンピュータがPDCであれば,Netlogonサービスの更
新通知間隔やサーバー通知間隔を大きくする。これらのパラメータは,レジストリのHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\Netlogon\ParameterのPulseConcurrency,Pulse,Randomizeで変更する
| PulseConcurrency | :1〜500パルス(デフォルトでは20パルス) |
| Pulse | :60〜3600秒(デフォルトでは300秒) |
| Randomize | :0〜120秒(デフォルトでは1秒) |
- RAWモード*1のバッファサイズは64Kバイト(またはファイルキャッシュ),COREモード*2のデフォルトのサーバーリクエストバッファサイズは4356バイトである。SMB(Server Message Block*3)のオーバーヘッドは読み込みで63バイト,書き込みで64バイトである。SMBバッファのサイズを調整するには,下記レジストリエントリにあるMaxCmdsパラメータの値を調整する
-
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\LanmanWorkstation\Parameter
- 不要なネットワークプロトコルを削除する
- ネットワーク設計を見直す。たとえば,ネットワークセグメントを分割し,ネットワークトラフィックを分散させる
- 高帯域幅のネットワーク媒体に変更することを検討する
- アプリケーションの読み込みI/O要求サイズがサーバーのリクエストバッファサイズの2倍であるとき,あるいは書き込み要求がリクエストバッファサイズの1.5倍であるとき,64Kバイトのバッファを確保できるだけの空きメモリがあるときには,そのバッファ間で直接データを送受信する。レジストリのHKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\lanmanWorkstation\ParameterのUseRawReadおよびUseRawWriteが1(ON)に設定されている必要がある。
- 小さなデータブロックの転送で使用される。読み込み時は63バイト,書き込み時は64バイトのオーバーヘッドが発生する。転送ブロックがRAWモードと比較して小さいので,ネットワークのオーバーヘッドが増加する。
- IBM社,Intel社,Microsoft社によって共同開発された,ネットワーク上に存在するコンピュータ間のコミュニケーションプロトコル。MicrosoftネットワークはSMBを利用している。
(松崎爲豁)
| Chapter 9 46/46 | |
