2009-04-24 11 views
1

現在、asp/vbscriptを使用してWebサーバーを通じてアプリケーションサーバー上でWebサービスを呼び出しています。これは低負荷時に非常にうまく動作します。しかし、高負荷時には、次のようなクエリを実行するのに最大25秒かかることがあります。asp/vbscriptを使用して.NETで書かれたWebサービスを呼び出すときのスケーラビリティの問題

Public Function GetValidLogon(storeKey, username) 
    Dim req 
    Set req = CreateObject("Microsoft.XMLHTTP") 

    Dim soapReq 
    soapReq = "<?xml version=""1.0"" encoding=""utf-8""?> " + _ 
       "<soap:Envelope " + _ 
        "xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" " + _ 
        "xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" " + _ 
        "xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> " + _ 
        "<soap:Body> " + _ 
         "<GetValidLogon xmlns=""" + namespace + """> " + _ 
          "<storeKey>" + _ 
           CStr(storeKey) + _ 
          "</storeKey>" + _ 
          "<username>" + _ 
           CStr(username) + _ 
          "</username>" + _ 
         "</GetValidLogon> " + _ 
        "</soap:Body> " + _ 
       "</soap:Envelope>" 

    req.open "POST", Me.serviceAddress, False 
    req.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
    req.setRequestHeader "SOAPAction", Me.serviceNamespace + "GetValidLogon" 
    req.send soapReq 

    Set GetValidLogon = SOAPResponseTo_GetValidLogonOutput(req.responseText) 
End Function 

あなたはどう思われますか?これは、Webサービス(上記参照)を呼び出すために使用しているコードですか、それとも、WebサービスをWebサービスに呼び出すためにvbscript/aspを使用しているという事実ですか? IISでいくつかの設定をすることはできますか?

また、負荷が高い場合でも、アプリケーションサーバー上で直接Webサービスを実行しているときは、常に高速です。

答えて

1

代わり

CreateObject("MSXML2.ServerXMLHTTP") 

を使用...サーバ側のアプリケーションで

を使用しないでください。

0

サーバー/コード/ IISがWebサービスとのN同時接続のみを制限しているのかどうか不思議です。これにより、他の要求がキューに入れられ、他の要求が完了するまでブロックされます。

+0

どうすればそれを調べることができますか?私も以前に考えていたので、すべての要求はしばらくしてからqueeueされ、サービスは遅くなります。しかし、私はそれが本当であるかどうかを監視したり調査したりする方法を本当に知りません。 – Fredrik

+0

yoruサービスログは、毎回起動したりシャットダウンしたりします。または、WCF E2Eトレースを使用して、SDKのsvctraceviewer.exeで調べます。 – JohnW

+0

@aktersnurr、私はASP/VBSやIISでこの種の考え方をどのようにトレースするかについてはあまりよく分かりません。あなたはWireSharkのようなものを使ってトラフィックを監視し、いつどのくらい多くのアウトバウンド接続を行っているのか見ることができます。 –

0

アプリケーション、データベース、またはActive Directory内のバックエンドにユーザー資格情報が保存されていますか。おそらく問題はあなたのアプリではなく、ADへのあなたの接続です。

0

負荷テスト中に開発環境にパフォーマンスの問題が表示されますか?

もしそうなら、上記のコードをテストASPページに入れてテストスクリプトを作成することをお勧めします。ページに2つのクエリ文字列パラメータ "n"と "m"を受け入れるようにします。各呼び出しの間に「m」ミリ秒の遅延を伴って「n」回連続してループし、その後何が起こるかを確認します。たぶん、複数のリクエストから同じページを呼び出すとどうなるか分かります。

ここから、アプリケーションサーバー上のIISのパフォーマンスカウンタを調べて、接続を削除するかどうか、および接続が待機している時間を確認できます。

必要に応じて、Webサービスのプロファイルに進むことができます。 Profiler Tools for .NETを参照してください。この問題は、データベース内であってもどこにでもある可能性があり、これらのツールは、それを絞り込むのに役立ちます。

+0

私はどのパフォーマンスカウンターを探す必要がありますか?問題はどこにもありません。なぜなら、私が質問したように、アプリケーションサーバーから直接サービスを実行すると、サービスは常に実行されているからです。 – Fredrik

関連する問題