web-dev-qa-db-ja.com

これの原因は何ですかIIS 7 Webサービスの散発的な接続エラー?

散発的に、.Netクライアントアプリケーションから.asmx Webサービスを呼び出そうとすると、次のエラーが発生します。

「基になる接続が閉じられました:存続することが期待されていた接続がサーバーによって閉じられました。トランスポート接続からデータを読み取ることができません:既存の接続がリモートホストによって強制的に閉じられました。」

散発的とは、ゼロ、数日に1回、または一部のユーザーの場合は1日に半ダース回発生する可能性があることを意味します。ユーザーの最初のWebサービス呼び出しでは発生しません。そして、後続の(通常は同じ)呼び出しは、失敗の直後に常に機能します。障害は、サービス内のさまざまなメソッドで発生し、通常、要求の時点から15〜20秒(ログによる)の間に発生します。

特定の呼び出しのIISサイトログを見ると、次のWindowsエラーコードのいずれかが表示されます。

121:セマフォタイムアウト期間が経過しました。

1236:ネットワーク接続がローカルシステムによって中止されました。

いくつかの追加の環境の詳細:

  • Windows Server 2008OSでIIS7を実行している2台のサーバーで構成される内部ネットワークWebファームで実行されています。これらの問題は、Windows Server2003で実行されている3台のサーバーからなる古いIIS6Webファームで実行した場合には発生しませんでした(開発環境とステージング環境に問題なく単一のIIS6/2003インスタンスを使用しています)。編集:また、これらのサーバーインスタンスはすべてVMWare仮想マシンであり、それがもう驚きであるかどうかはわかりません。

  • Webサービスは、独自のアプリケーションプール(.Net 2.0、統合パイプライン)を持つ.Net 2.0 /3.5コンパイル済み.asmxWebサービスです。 Windows認証のみが有効になっています。

  • ファームには、プライマリサービスと同じ物理パスを使用する別のWebサービスがありますが、唯一の違いは、基本認証が有効になっていることです。これは、ERPシステムの一部に使用されます。同じアプリケーションプールと異なるアプリケーションプールを使用してみましたが、エラーには影響しません。このサイトはプライマリサイトほど頻繁にヒットせず、エラーは発生しませんでした。

  • 前述のように、エラーは.Netクライアントから呼び出された場合にのみ発生します。他のアプリケーションからは発生しません。クライアントアプリケーションは、要求ごとに常に新しいWebサービスオブジェクトを作成し、サービス資格情報をSystem.Net.CredentialCache.DefaultCredentialsに設定しています。

    アプリケーションは、クライアントにローカルに展開されるか、Citrixサーバーセッションで実行されます。 Citrixで実行しているユーザーは問題が発生していないようで、ローカルに展開されているクライアントのみが発生します。 CitrixサーバーとWebファームは同じ物理的な場所にあり、同じIP範囲(10.67.xx.xx)にあります。エラーが発生しているローカルにデプロイされたクライアントは、別の場所(10.105.xx.xx、10.31.xx.xx)にあります。

OSログをチェックして問題がないか確認しましたが、何も目立ちません。

編集:実際、私自身は少し前にエラーに遭遇しました。ログをもう一度チェックすることにしましたが、「同じ」時間に「監査の失敗」のセキュリティログエントリがあることがわかりました(IISログエントリは1:39:59、イベントログエントリは1:39:50)。これが偶然かどうかわからないので、以前のエラーのログをチェックする必要があります。私はおそらくストローを把握していますが、詳細は次のとおりです。

ログ名:セキュリティソース:Microsoft-Windows-セキュリティ-監査日:2009年7月8日1:39:50 PMイベントID:5159タスクカテゴリ:フィルタリングプラットフォーム接続レベル:情報キーワード:監査失敗ユーザー:N/Aコンピューター:is071019。<******>。net説明:Windowsフィルタリングプラットフォームがローカルポートへのバインドをブロックしました。

アプリケーション情報:プロセスID:1260アプリケーション名:\ device\harddiskvolume1\windows\system32\svchost.exe

ネットワーク情報:送信元アドレス:0.0.0.0送信元ポート:54802プロトコル:17

フィルター情報:フィルター実行時ID:0レイヤー名:リソース割り当てレイヤー実行時ID:36

また、IIS7でFailed Request Tracingを使用しようとしましたが、サービス呼び出しが実際にFRTがキャプチャできる場所に到達することはありません(失敗がWebサービスログに記録されている場合でも)。

ネットワークインフラストラクチャグループは、DNSをチェックアウトし、NIC設定が正しいため、「フラッピング」が発生しないと述べました。すべてがパンアウトします。ドメインコントローラーサーバーをチェックアウトしたかどうかはわかりません。それが問題になる可能性があるかどうかを確認しますが。

何か案は?または、これの根底に到達するための他のデバッグ戦略はありますか?私はソフトウェアを担当する開発者であり、ネットワークの側面から何を調査するかについての知識は実際にはありません。ただし、何が起こっているかに基づいて、ネットワークの問題のように聞こえます。

助けてくれてありがとう。

6
user11764

エラーが発生したときにエラーで失敗するページを作成し(catchを試してください)、WCATを使用してさまざまな負荷条件をシミュレートできます。うまくいけば、パターンを確認するか、少なくとも負荷に関連しているかどうかを確認できます。それ以外の場合は、この問題をキャッチしてリクエストを再試行するだけの何かを.Netクライアントに組み込んで、ユーザーに対して透過的にします。

1
Adam Brand

また、実稼働環境でのみ同じ散発的な状況が発生しています。私が見つけたがまだ検証されていない提案のいくつかは、サーバーでHttp Keep-Aliveをオフにするか、Webリクエストでオフにすることです。 http://support.Microsoft.com/kb/81945 を参照してください

これをテスト環境でテストすることを計画しています。

0
Philippe Monnet