Web services 调用使用asp/vbscript在.NET中编写的web服务时的可伸缩性问题

Web services 调用使用asp/vbscript在.NET中编写的web服务时的可伸缩性问题,web-services,asp-classic,vbscript,Web Services,Asp Classic,Vbscript,我们目前正在使用asp/vbscript通过web服务器调用应用程序服务器上的web服务。这在低负载时工作得很好。但是,在高负载期间,执行如下查询有时可能需要25秒: Public Function GetValidLogon(storeKey, username) Dim req Set req = CreateObject("Microsoft.XMLHTTP") Dim soapReq soapReq = "<?xml version=""1.0""

我们目前正在使用asp/vbscript通过web服务器调用应用程序服务器上的web服务。这在低负载时工作得很好。但是,在高负载期间,执行如下查询有时可能需要25秒:

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
公共函数GetValidLogon(storeKey,用户名)
Dim请求
Set req=CreateObject(“Microsoft.XMLHTTP”)
暗淡的soapReq
soapReq=”“+_
" " + _
" " + _
" " + _ 
"" + _
CStr(存储密钥)+_
"" + _
"" + _
CStr(用户名)+_
"" + _
" " + _
" " + _
""
请求打开“POST”,Me.serviceAddress,错误
req.setRequestHeader“内容类型”,“文本/xml;字符集=utf-8”
req.setRequestHeader“SOAPAction”,Me.serviceNamespace+“GetValidLogon”
发送soapReq
设置GetValidLogon=SOAPResponseTo_GetValidLogonOutput(请求响应文本)
端函数
你认为可能是什么问题?是我们用来调用web服务的代码(见上文),还是仅仅因为我们使用vbscript/asp来调用web服务?可能是IIS中的某些设置


而且每次,即使在高负载的情况下,当我们直接在应用服务器上执行web服务时,速度总是很快。

我想知道服务器/code/IIS是否将自身限制为只对web服务进行N个并发连接。这将导致其他请求排队并阻塞,直到其他请求完成。

我想知道服务器/code/IIS是否将自身限制为仅与web服务进行N个并发连接。这将导致其他请求排队并阻塞,直到其他请求完成。

后端上存储的用户凭据在哪里?在应用程序中、数据库中或Active Directory中?可能问题不在于你的应用程序,而在于你与广告的连接。

用户凭据存储在后端的什么位置?在你的应用程序中、数据库中或Active Directory中?也许问题不在于你的应用程序,而在于你与广告的连接。

在负载测试期间,性能问题是否也会出现在你的开发环境中

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

然后,您可以继续检查应用程序服务器上IIS的性能计数器,注意是否正在断开连接,以及连接等待的时间


如果需要,您可以继续分析web服务。看见问题可能在任何地方,甚至在数据库中,这些工具将帮助您缩小范围。

在负载测试期间,性能问题是否也会出现在您的开发环境中

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

然后,您可以继续检查应用程序服务器上IIS的性能计数器,注意是否正在断开连接,以及连接等待的时间

如果需要,您可以继续分析web服务。看见问题可能在任何地方,甚至在数据库中,这些工具将帮助您缩小范围。

永远不要使用

CreateObject("Microsoft.XMLHTTP")
在服务器端应用程序中。。使用

CreateObject("MSXML2.ServerXMLHTTP")
相反。

切勿使用

CreateObject("Microsoft.XMLHTTP")
在服务器端应用程序中。。使用

CreateObject("MSXML2.ServerXMLHTTP")

相反。

如果是这样,我如何调查?因为我以前也考虑过这一点——所有的请求都会在一段时间后被查询,导致服务速度变慢。但我真的不知道如何监控或调查是否存在这种情况。请在每次启动或关闭时记录您的服务日志。或者使用WCF E2E跟踪并在SDK中使用svctraceviewer.exe查看它。@aktersnurr,我不太确定如何使用ASP/VBS或IIS跟踪这种想法。您可以尝试使用WireShark之类的工具来监控流量,并查看在任何给定的时间内有多少出站连接。我查看了WireShark,但我无法真正了解如何监控出站连接。我如何调查是否存在这种情况?因为我以前也考虑过这一点——所有的请求都会在一段时间后被查询,导致服务速度变慢。但我真的不知道如何监控或调查是否存在这种情况。请在每次启动或关闭时记录您的服务日志。或者使用WCF E2E跟踪并在SDK中使用svctraceviewer.exe查看它。@aktersnurr,我不太确定如何使用ASP/VBS或IIS跟踪这种想法。您可以尝试使用WireShark之类的工具来监控流量,并查看您在任何给定时间进行的出站连接数。我查看了WireShark,但我无法真正了解如何监控出站连接。我应该查找哪些性能计数器?问题不在任何地方。因为正如我在问题中所写的,当我直接从应用服务器执行服务时,服务总是执行得很快。我应该寻找哪些性能计数器?问题不在任何地方。因为正如我在问题中所写的,当我直接从应用服务器执行服务时,服务总是执行得很快。