|
分類:[ASP.NET (C#)]
IIS起動時に、まれに特定のクライアントだけがIISからの応答が遅れることがあります。 問題の起こりそうな箇所や、切り分け方等、お知恵を拝借願えないでしょうか。
■サーバ環境 OS:Windows Server 2008 R2 (2台) ロードバランサ:Windows ネットワーク負荷分散マネージャ6.1 IIS バージョン:7.5 .Net Framework バージョン : 4.0
■クライアント環境 OS : Windows XP, 7 ブラウザ : IE8, 9
次のような問題が起きています。 --------- @ASPページから、UpdatePanelとTimerクラスを使い、定期的にサーバPCに対してhttp通信を行っています。 (15秒に一回通信する。)
Aロードバランサ(NLB)が、クラスタ上の2台のサーバPCに対して、有効/無効を切り替えます。 有効になったサーバPCはIISが起動し、無効になった方は停止します。
BASPページは、TimerによってサーバPCに通信します。 (この時、ASPページはサーバPCが切り替わったことには関知せずに、切り替わり先のサーバPCに接続に行きます。)
[現象] ⇒Bの段階で、通常はサーバ接続に成功します。 しかし約二十回の切り替えに一回、一台のPCからだけ、10分間ほど、IISからの応答が非常に遅くなります。
Fiddlerで確認したところ、遅延時、サーバはリクエストを正常に受け付けています。 ただ、「200 OK」を返すまでに毎回約1分半ほどかかっていることがわかります。 (ServerGotRequestからServerBeginResponseまでの時間が約1分半ある)
一度遅延が始まると、それから10分間ほど、何度もレスポンスが遅れ続けます。 応答が遅くなるPCは、その時によって違います。 その間、他のPCは、順調に接続できています。
切り替え先のWebサーバ上で、ログを確認すると、レスポンスの遅延時には、問題のあるクライアントだけ、 Page_Load()が開始されるまでに1分半ほど遅れています。 (他のPCは、正常に15秒に一回、Page_Load()が実行されています。)
特定のセッションのリクエストだけが、キューにたまっている状態?かと考えていますが、原因がわかりません。 無効になったサーバPC上ではIISが停止しており接続自体がありえず、ロードバランサは関係ないと思っています。
よろしくお願いいたします。
|