gpt4 book ai didi

asp.net - Azure Web 角色 - 最大出站 http 连接数

转载 作者:行者123 更新时间:2023-12-02 23:52:12 24 4
gpt4 key购买 nike

我正在构建一个 Azure Web 角色,需要调用大量外部 Web 服务。

我记得 ASP.Net 1.1 的默认最大连接限制为 2,如果您的应用程序需要更多连接,您可以调整该限制(说实话,这个限制相当低)。在 ASP.Net 2.0 上,我相信他们提出了这一点,并且建议是核心数的 12 倍。

Azure Web 角色有哪些限制以及调整限制的方法?我将同时处理数百或数千个并发出站请求。这是否意味着我需要更大的实例(更多核心),或者我可以通过使用更多“超小型”实例并正确配置它们来做到这一点(即使这意味着每台服务器 12 个)?

谢谢。

最佳答案

实例的大小仅决定为实例保留的带宽(XS 为 5 Mbps,更多信息 here )。您需要做的只是将 DefaultConnectionLimit 更改为大于 2:

  <system.net>
<connectionManagement>
<add address="*" maxconnection="12"/>
</connectionManagement>
</system.net>

如果您想在 Web 应用程序中允许此操作,请将其添加到您的 web.config 中。例如,如果您想在启动实例之前调用服务,请将以下内容添加到您的 WebRole.cs:

    public override bool OnStart()
{
ServicePointManager.DefaultConnectionLimit = 12;
return base.OnStart();
}

请记住,即使请求已排队,如果您以异步方式调用 Web 服务,您也会获得更好的整体性能。这是一个非常基本的示例(假设您调用一个简单的 REST 服务,WCF 客户端代理对异步请求有更好的支持):

<%@ Page Async="true" ... %>

public partial class AsyncPage : System.Web.UI.Page
{
private WebRequest req;

void Page_Load (object sender, EventArgs e)
{
AddOnPreRenderCompleteAsync (
new BeginEventHandler(BeginWebServiceCall),
new EndEventHandler (EndWebServiceCall)
);
}

IAsyncResult BeginWebServiceCall (object sender, EventArgs e,
AsyncCallback cb, object state)
{
req = WebRequest.Create("http://some.webs.service/rest/api");
return req.BeginGetResponse (cb, state);
}
void EndWebServiceCall (IAsyncResult ar)
{
using (var response = req.EndGetResponse(ar))
{
using var reader =
new StreamReader(response.GetResponseStream()))
{
var text = reader.ReadToEnd();
...
}
}
}
}

关于asp.net - Azure Web 角色 - 最大出站 http 连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12425705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com