【问题标题】:MaxConcurrentRequest in selfhost application自托管应用程序中的最大并发请求
【发布时间】:2014-12-12 05:05:17
【问题描述】:

我有一个 selfhost signalr 应用程序,一切正常,但是当用户数超过 5000 时,用户会迅速重新连接。我知道 appConcurrentRequestLimit 的默认值为 5000。我运行这个:

cd %windir%\system32\inetsrv
appcmd.exe set config /section:system.webserver/serverRuntime /appConcurrentRequestLimit:100000

但没有任何改变。我根据this增加了maxConcurrentRequestsPerCPU和requestQueueLimit

但我还有问题。

我使用的是 windows server 2012 和 iis 8

【问题讨论】:

  • 您能否提供更多信息,了解当您拥有 > 5000 个用户时会发生什么?重新连接是什么意思?用户是否看到错误?您能否提供他们收到的错误详细信息或 http 错误响应?
  • 任何用户无法连接推送,当前用户快速重新连接

标签: performance iis signalr owin self-hosting


【解决方案1】:

您在这里是在黑暗中拍摄,您没有关于实际性能和正在发生的事情的数据。由于不同的原因(服务器超时、定期重新连接、服务器错误),用户可能会重新连接。有无数种可能。

了解正在发生的事情和衡量性能的正确方法是使用默认配置运行Baseline 性能负载测试,并收集相关的性能计数器,如当前请求、排队请求、当前连接、最大连接等.

您还应该在服务器上收集任何相关的错误日志,以帮助您了解发生了什么。

您可以在下面找到所需的性能计数器的完整列表:

内存

.NET CLR Memory# bytes in all Heaps (for w3wp)

ASP.NET

ASP.NET\Requests Current
ASP.NET\Queued
ASP.NET\Rejected

CPU

Processor Information\Processor Time

TCP/IP

TCPv6\Connections Established
TCPv4\Connections Established

网络服务

Web Service\Current Connections
Web Service\Maximum Connections

线程

.NET CLR LocksAndThreads\ # of current logical Threads
.NET CLR LocksAndThreads\ # of current physical Threads

在图表上获得基准性能结果后,您可以修改配置(例如,像上面尝试的那样修改并发请求的数量),然后重新运行测试,并再次收集相同的性能计数器。

性能计数器结果不言自明,它们将引导您找到解决方案。

您可以使用 Crank 等工具生成负载:

https://github.com/SignalR/SignalR/tree/dev/src/Microsoft.AspNet.SignalR.Crank

此外,您还可以查看 SignalR 故障排除指南:

http://www.asp.net/signalr/overview/testing-and-debugging/troubleshooting

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多