@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

エラー:The underlying connection was closedへの対応方法について

1
投稿者投稿内容
T-taka
会議室デビュー日: 2006/10/16
投稿数: 7
投稿日時: 2007-06-05 11:38
現在、Visual Studio .net 2003、.net Framework1.1、C#を使い、WindowsアプリとWebサービスを使ったシステムを開発しております。
現在、Windowsアプリで画面を開いたまま数分時間を置き、画面を遷移させDBから情報を取得しようとすると、下記エラーが発生して対応に苦慮しています。

エラー1:
the underlying connection was closed: An unexpected error occurred on a receive
エラー2:
the underlying connection was closed: An unexpected error occurred on a send

上記エラーが発生するようになったのは、WindowsアプリとDBサーバ間の接続方法を下記のように変更してからです。

【接続変更前】
Windowsアプリ⇔プロキシサーバ⇔ロードバランサー⇔Webサーバ(複数)⇔DBサーバ(1台)
【接続変更後】
Windowsアプリ⇔ロードバランサー⇔Webサーバ(複数)⇔DBサーバ(1台)

プロキシサーバを経由しないようにするための設定方法はIEのLAN設定→プロキシ設定の例外ルールを用いて設定しました。(IISのログより接続元のIPがプロキシサーバのIPからクライアントPCが持つIPに変更されていることを確認しています)
ロードバランサーを用いて複数台のWEBサーバのうち、1台を経由し、WEBサーバ上のWEBサービスを用いてDBサーバへ接続しています。
また、下記接続方法であれば上記エラーが発生せずにWindowsアプリが動作することを確認しています。
○Windowsアプリ⇔Webサーバ(1台)⇔DBサーバ(1台)
プロキシサーバを用いれば上記エラーが発生しないのですが、プロキシサーバを使わずに接続する必要がでてきました。

上記状況より、ロードバランサーとWindowsアプリが直接繋がるとエラーが頻発しているのですが、プログラムに問題があるのかネットワーク設定に問題があるのかまったく検討がつかない状況です。
また、Webアプリではプロキシサーバを使用せずに問題なく動作することからロードバランサーの設定に問題があるとは考えにくいと思っております。
【Webアプリの接続方法】
○Webアプリ(asp、IE使用)⇔ロードバランサー⇔Webサーバ(複数)⇔DBサーバ(1台)

上記現象がおきる原因に心辺りがある方、ご教授ください。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-06-05 13:49

なんか大変そうでお気の毒ですが、
複数のWebサーバーを使うほど規模の大きなシステムの問題をここで聴くのは、
質問者にも、回答者にも、閲覧者にも、
利益がほとんどないと思います。

Webサーバーの種類もいろいろありますし(IISのバージョン、OSなど)、
ネットワークの接続のトラブルならソフトだけの問題でなく、間の経路だとか
物理的設置状況による場合もあるし、
どんなロードバランサつかってるのかもわからないし。

通常の環境の人では再現させられる人もいませんし、
同じ問題で困ってる人もほとんどいませんから、
たとえ問題の解決策がわかっても、
それで利益を得る人がいません。
そもそも興味がわきません。

がんばって自分で調べるしかないでしょう。

まず、エラーからしてTCPかHTTPレベルのコネクションの問題でしょう。
なら、どこで接続が切れてるのか、誰が切ってるのかを調べるべきです。
数分おいた場合、どのレベルの接続がきれるのでしょうか?

ロードバランサーはどんなロードバランサーですか?
「ロードバランサー」では機能の名称しかわかりませんので、
どんな実装の機械なのかわかりません。
TCPレベルのもの、HTTPレベルのもの、いろんな実装があります。

違いをきちんと理解していればどこが悪いか検討がつくはずです。


WindowsアプリとWebアプリと比較してますが、

引用:

また、Webアプリではプロキシサーバを使用せずに問題なく動作することからロードバランサーの設定に問題があるとは考えにくいと思っております。
【Webアプリの接続方法】
○Webアプリ(asp、IE使用)⇔ロードバランサー⇔Webサーバ(複数)⇔DBサーバ(1台)



このWebアプリはどこで動いてるのですか?
クライアントにIISでも入れているのですか?
普通Webアプリといったら、リモートのWebサーバー上でASPを動かして、
それをブラウザ経由で動かします。

ASPのページ遷移やポストバックは、同じ接続で起こるとはかぎりません。
サーバー側のオブジェクトはタイムアウトするまで、生きています。
(普通30分くらいかな?)

HTTPの接続が切れても、サーバー側のオブジェクトが生きていれば
ASP的には同じ接続です。

WebアプリとWindowsアプリを比較して、何が比較できるのか、
よく考えましょう。

文面を読む限りではロードバランサーがだめなんだろうと思いますよ。
HTTPコネクションのタイムアウトが短いんじゃないかな?
そよかぜ
会議室デビュー日: 2007/06/09
投稿数: 1
投稿日時: 2007-06-09 16:23
当方とほぼ似たようなシステムでほぼ似たような現象ですね
Windowsアプリを動かしているクライアント側でこのようなエラーでているもの
と思います。

http://msdn2.microsoft.com/ja-jp/library/aa560610.aspx

ここに書いてある方法を試してみてください。当方ではこれで随分改善されました。
WindowsアプリをクライアントとしたWebサービスはこれから増えると思うのですが
なかなか情報がないですね
1

スキルアップ/キャリアアップ(JOB@IT)