web-dev-qa-db-ja.com

VMware SQL Serverに移行した後、断続的に「ログインタイムアウトの期限が切れました」

物理的なスタンドアロンのSQL Server 2008 R2/W2k8 R2からVMWare SQL Server 2014/Win 2012に移行した後、アプリケーションで断続的なログインタイムアウトの期限切れが発生していますR2。
1日に5回程度発生しているため、トラブルシューティングが困難です。

失敗メッセージ

エラー:Microsoft SQL Server Native Client 10.0:プレログイン応答の遅延のため、ログインプロセスを完了できません。
エラー:Microsoft SQL Server Native Client 10.0:ログインタイムアウトの期限が切れました。

詳細

  • sp_configureは両方のインスタンスで同じです。
  • 以前のサーバーと比較してcpuは少なくなっていますが、Max Worker Threadsで問題ありません。
  • SQL Serverでローカルに接続を監視していたとき、アプリケーションからLogin timeout expiredを取得すると同時に正常に機能していました。
  • リモートクエリのタイムアウトを構成する は、ここで私の問題を解決しません。
  • VMXNET3 Virtual NICドライブを使用しています。
2
Danilo Braga

私はここにいます 自分の質問に答える 同じ行動を経験している人々を助けるために。インターネットでの検索で多くの観察と実験を行った後、次の手順に従ってこの問題の解決策を見つけました。本番環境に移行する前に、すべてをテストしてください。


  1. SQL Serverとクライアントアプリケーションサーバーの両方で、TCP Chimney機能を無効にします。

  2. システムレベルのレジストリでTCPChimneyおよびオフロード機能を無効にします。

これは、コマンドプロンプトから"Netsh int ip set chimney DISABLED"コマンドを実行することで実行できます。ただし、手動で行うことができます。

レジストリ"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"に移動します


a。 EnableTCPChimneyレジストリエントリをダブルクリックします。エントリが存在しない場合は、空白スペースを右クリックして作成し、[DWORD(32ビット)の作成]をクリックします。
b。 [DWORD値の編集]ダイアログボックスで、[値のデータ]ボックスに0と入力し、[OK]をクリックします。
c。 EnableRSSレジストリエントリをダブルクリックします。
d。 [DWORD値の編集]ダイアログボックスで、[値のデータ]ボックスに0と入力し、[OK]をクリックします。
e。 EnableTCPAレジストリエントリをダブルクリックします。
f。 [DWORD値の編集]ダイアログボックスで、[値のデータ]ボックスに0と入力し、[OK]をクリックします。
g。レジストリキー「SynAttackProtect」を作成し、– [DWORD値の編集]ダイアログボックスで、[値のデータ]ボックスに0と入力し、[OK]をクリックします。
h。サーバーを再起動します。

  1. NICカードのプロパティでTCPChimneyとオフロード機能を無効にします。以下に手順を示します。

a。 [スタート]、[ファイル名を指定して実行]の順にクリックし、ncpa.cplと入力して、[OK]をクリックします。
b。ネットワークアダプターオブジェクトを右クリックし、[プロパティ]をクリックします。
c。 [構成]をクリックし、[詳細設定]タブをクリックします。
d。 [プロパティ]リストで、[Receive Side Scaling]をクリックし、[値]リストで[Disable]をクリックして、[OK]をクリックします。
e。プロパティ一覧でTCP/IPオフロードをクリックし、値一覧で無効をクリックして、OKを次にクリックします。
f。ネットワークアダプターオブジェクトごとに手順2〜5を繰り返します。

  1. NICの[詳細設定]で[IPv4チェックサムオフロード]および[IPv4ラージ送信オフロード] OR「チェックサムオフロード」および「ラージ送信オフロード」が有効になっていることを確認します。有効になっている場合は無効にします。オプションは、モデルとNICの種類によって異なる場合があります。他に検索して無効にするプロパティは次のとおりです。

私。受信IPチェックサムのオフロード
ii。オフロード受信TCPチェックサム
iii。オフロードTCPセグメンテーション
iv。送信IPチェックサムのオフロード
v。オフロード送信TCPチェックサム


関連記事:


Windows Server 2008のTCP Chimney Offload、Receive Side Scaling、およびネットワークダイレクトメモリアクセス機能に関する情報: http://support.Microsoft.com/ kb/951037
アプリケーションがWindows Server 2003を実行しているサーバー上のSQL Serverに接続するときのエラーメッセージ:「一般的なネットワークエラー」、「通信リンクエラー」、または「トランスポートレベルのエラー」: http ://support.Microsoft.com/kb/942861


パフォーマンスへの影響について:


TCP Chimneyオフロード– SQL Serverワークロードへのパフォーマンスと同時実行性への影響の可能性: http://blogs.msdn.com/b/psssql/archive/2008/10/01/windows-scalable-networking -pack-possible-performance-and-concurrency-impacts-to-sql-server-workloads.aspx

注:これにより、数秒間ネットワークが切断されるので、それに応じてスケジュールを設定してください。レジストリの変更は、マシンの再起動が行われた後にのみ有効になります。また、NICカードのプロパティを無効にした場合、ネットワークが数秒間ダウンして、変更が反映されてから再開できるようになります。これが製品ボックスの場合は、ダウンタイムまたはメンテナンスウィンドウ


TCP TIME-WAIT Delay&MaxUserPort:
クライアントアプリケーションからSQL Serverに接続するマシンから、次の変更を行う必要があります。これをアプリケーション/ Webサーバーに普遍的に追加します。


5。 TCP TIME-WAIT遅延:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parametersで利用可能なTcpTimedWaitDelayレジストリキーを30秒に設定します。
レジストリキーが存在しない場合は、作成して、上記で提案した値に設定します。


6。 MaxUserPort:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parametersで使用可能なMaxUserPortレジストリキーを65,000に設定します。再度、レジストリキーが存在しない場合は、作成して、上記で提案した値に設定します。


詳細については、次の記事を参照してください。
TCP TIME-WAIT遅延: https://technet.Microsoft.com/en-us/library/cc938217.aspx
MaxUserPort: https://technet.Microsoft.com/en-us/library/cc938196.aspx

4
Danilo Braga