首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET核心SignalR websocket连接限制

ASP.NET核心SignalR websocket连接限制
EN

Stack Overflow用户
提问于 2018-07-09 09:54:27
回答 1查看 7.6K关注 0票数 5

我使用Windows 2016标准使用SignalR (ASP.NET Core)应用程序进行负载测试。Dotnet内核托管2.1.1已安装

我不能创建超过3000 (2950-3050)的连接。

已经尝试了如下所述的推荐:

添加了对UseKestrel的限制(如果我将值设置为100或1000,这似乎是可行的):

代码语言:javascript
运行
复制
var host = new WebHostBuilder()
    .UseKestrel(options =>
    {
        options.Limits.MaxConcurrentConnections = 50000;
        options.Limits.MaxConcurrentUpgradedConnections = 50000;
    })

通过添加以下内容更改了所有aspnet.config文件:

代码语言:javascript
运行
复制
<system.web>
    <applicationPool maxConcurrentRequestsPerCPU="50000" />
</system.web>

执行此命令:

cd %windir%\System32 32\inetsrv\ appcmd.exe set config /节:system.webserver/serverRuntime /appConcurrentRequestLimit:50000

performance \当前连接添加了性能计数器-最大连接。最大连接增加到3300并停止。

服务器日志中没有例外情况。但我觉得制度上是有一些限制的。

服务器IIS日志仅包含以下内容:

/messageshub id=A_3x1sH9kHM1Rc3oPSgP6w 80 - 172.20.192.11 -- 404 0 0 3

客户端异常基本上如下:

System.Net.Http.HttpRequestException:将内容复制到流中时出错。-> System.IO.IOException:无法从传输连接读取数据:现有连接被远程主机强制关闭。

EN

回答 1

Stack Overflow用户

发布于 2019-01-20 09:54:19

在Windows上,可能会出现动态端口分配问题。默认情况下,Windows有5000个端口号可供分配给TCP连接,其中1024个端口是为操作系统本身保留的,最终将有3977个端口可以自由分配。在您的例子中,数字是3300,正如您提到的那样,但是有可能建立了3300个连接,其中677个连接是Time_Waited。无论如何,我建议使用

代码语言:javascript
运行
复制
netstat -an | find 'Established" -c 
netstat -an | find 'TIME" -c 
netstat -an | find 'CLOSED" -c 

为了计算在收到IO异常时已建立的& time_wait & close_wait连接的数量,如果该数量接近5000,只需将其添加到注册表中,然后重新启动并再次测试。

代码语言:javascript
运行
复制
  [HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51242689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档