2009-04-24 30 views
1

我们目前通过我们的web服务器使用asp/vbscript在我们的应用服务器上调用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服务的代码(参见上文),还是仅仅是我们使用vbscript/asp来调用Web Web服务的事实?它可以在IIS中的一些设置...?

每次,即使在高负载情况下,当我们直接在应用程序服务器上执行Web服务时,它总是很快。

回答

1

在服务器端应用程序不要使用

..使用

CreateObject("MSXML2.ServerXMLHTTP") 

代替。

0

我很好奇,看看服务器/代码/ IIS是否限制自己只与N个并发连接到Web服务。这会导致其他请求排队并阻塞,直到其他请求完成。

+0

我该如何调查是否属于这种情况?因为我之前也曾考虑过这一点 - 所有请求都会在一段时间后排队等候,从而使服务变得缓慢。但我真的不知道如何监测或调查是否属实。 – Fredrik 2009-04-24 12:52:13

+0

每次启动或关闭时都有yoru服务日志。或者使用WCF E2E跟踪并使用SDK中的svctraceviewer.exe查看它。 – JohnW 2009-04-24 12:56:38

0

用户凭证存储在后端的哪里? - 在您的应用程序,数据库或Active Directory中?也许问题不在于你的应用程序,而在于你与AD的连接。

0

性能问题在负载测试期间是否也显示在开发环境中?

如果是这样,那么我建议你通过将上面的代码放入测试ASP页面来创建一个测试脚本。让页面接受两个查询字符串参数“n”和“m”。连续循环“n”次,每次调用之间的延迟时间为“m”毫秒,然后查看会发生什么。甚至可以看到当你从多个请求调用同一页面时会发生什么。

从那里,您可以继续检查应用程序服务器上IIS的性能计数器,注意是否丢弃连接以及连接等待的时间。

如有必要,您可能会继续对Web服务进行概要分析。见Profiler Tools for .NET。问题可能在任何地方,甚至在数据库中,这些工具将帮助您缩小范围。

相关问题