この特集のトップページへ

ネットワークのボトルネックの解決法

 ネットワークがボトルネックの場合の解決方法は,ネットワークのトラフィックをいかに減らすかという点に尽きる。そのためには,ほかのリソースボトルネックの場合と同様に,ハードウェアレベル,システムレベル,アプリケーションレベルで検討しなければならない。ハードウェアレベルで解決する場合には,ネットワーク設計の見直し,ネットワーク帯域幅の増強,トラフィックを分散させるためのネットワークセグメントの分割などの検討が必要となる。システムレベルで解決する場合には,プロトコルおよび関連パラメータのチューニングを検討する。また,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
  • 不要なネットワークプロトコルを削除する
  • ネットワーク設計を見直す。たとえば,ネットワークセグメントを分割し,ネットワークトラフィックを分散させる
  • 高帯域幅のネットワーク媒体に変更することを検討する

  1. アプリケーションの読み込みI/O要求サイズがサーバーのリクエストバッファサイズの2倍であるとき,あるいは書き込み要求がリクエストバッファサイズの1.5倍であるとき,64Kバイトのバッファを確保できるだけの空きメモリがあるときには,そのバッファ間で直接データを送受信する。レジストリのHKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\lanmanWorkstation\ParameterのUseRawReadおよびUseRawWriteが1(ON)に設定されている必要がある。
  2. 小さなデータブロックの転送で使用される。読み込み時は63バイト,書き込み時は64バイトのオーバーヘッドが発生する。転送ブロックがRAWモードと比較して小さいので,ネットワークのオーバーヘッドが増加する。
  3. IBM社,Intel社,Microsoft社によって共同開発された,ネットワーク上に存在するコンピュータ間のコミュニケーションプロトコル。MicrosoftネットワークはSMBを利用している。

松崎爲豁

前へ Chapter 9 46/46