web-dev-qa-db-ja.com

CLOSE_WAITのIIS7百の接続

IIS7サーバーに.Netアプリケーションがあり、別のサーバーに移動するまでは正常に機能していました。

まったく同じコードを新しいサーバーに移動したところ、数時間後にWebサイトがリモート要求に応答しなくなったのに気付きましたが、サーバーにリモートデスクトップを実行すると、ローカルホストに対して行われた要求に応答しました。 Webサイトとアプリケーションプールを停止すると、再び正常に機能し始めました。

Httpポートに対してCLOSE_WAIT状態のままで、決して閉じられない何百ものリクエストの問題を追跡することができました(数時間待っても、それらは同じままです)。

何かアイデアはありますか?

3
rjlopes

Http.sysのバージョンは何ですか?次のアップデートを試してみてください。

接続がロードバランサーを介している場合、Windows Vista、Windows 7、Windows Server 2008、またはWindows Server 2008 R2を実行しているコンピューターへのHTTP接続で遅延が増加します
http://support.Microsoft.com/kb/2634328

TCP KeepAliveTimeの値も確認する必要があります。デフォルトでは、これは2時間に設定されています。特に、インターネットに接続しているWebサーバーの場合は、これを短くすることをお勧めします。多くの場合、これをセッション状態のタイムアウト(デフォルトでは20分)と同じに設定して、Web開発者があなたを嫌わないようにすることができます。値を20分に設定するには、16進dword値0x00124F80を使用します。 :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  
"KeepAliveTime"=dword:00124F80  

KeepAliveTime
キー:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
値のタイプ:REG_DWORD-ミリ秒単位の時間
有効範囲:1–0xFFFFFFFE
デフォルト:7,200,000(2時間)
説明:この値は、TCPがキープアライブパケットを送信することにより、アイドル状態の接続がまだ無傷であることを確認しようとする頻度を制御します。リモートシステムがまだ到達可能で機能している場合は、キープアライブ送信を確認します。キープアライブパケットはデフォルトでは送信されません。この機能は、アプリケーションによる接続で有効になっている場合があります。

もう1つの潜在的な疑いは、Windowsの高度なTCP/IP機能です。これらの機能は、微妙で診断が難しい問題を引き起こす可能性があり、ドライバーは堅実である必要があります。ほとんどのHPおよびDellサーバーにはBroadcomチップが搭載されており、Broadcomはこれらの機能に関して欠陥のあるドライバーで知られているため、これは検討する価値があります。これらの機能を有効にすることで測定可能なメリットを実証できない限り、私はこれらの機能を個人的に無効にします。機能を無効にする管理者特権のコマンドプロンプトで入力するコマンドは次のとおりです。

netsh interface tcp show global  
netsh interface tcp set global autotuninglevel = disabled  
netsh interface tcp set global rss = disabled  
netsh interface tcp set global chimney = disabled  
netsh interface tcp set global netdma = disabled  
4
Greg Askew

article を確認すると、問題の理解とトラブルシューティングに役立つ場合があります。また、サーバー上のNICドライバーを確認し、最新のものに更新します。

1
Vivek Kumbhar