【发布时间】:2015-03-11 03:59:31
【问题描述】:
我有一个部署到 Azure Web 角色(云服务,而不是 Azure 网站)的 SignalR 解决方案,为了确保我们可以最大化每个实例的连接数,我需要对各种 ASP.NET 进行一些更改本文详细设置:http://www.asp.net/signalr/overview/performance/signalr-performance#tuning
appConcurrentRequestLimit 和 requestQueueLimit 设置很容易通过使用 APPCMD 进行相关更改的启动任务进行更改。但是,maxConcurrentRequestsPerCPU 设置位于 aspnet.config 文件中,无法通过相同的机制进行更改。
我已尝试使用启动任务直接更新该文件(目前只是一个基本的文件替换),但它似乎在启动任务完成后被 Azure 运行时替换,因此更改丢失。我可以 RDP 进入机器并手动进行更改,因此我已经看到它可以工作,但是对于我们希望按需扩展和缩减的服务来说,这是不可持续的。
任何关于如何在 Azure 环境中更改此设置的想法都将不胜感激!
【问题讨论】:
-
也许您可以使用
ServerManager类并更改配置。甚至没有开始尝试这个。 -
只是另一个盲点:尝试从 RoleEntryPoint 类的 OnStart 替换该文件 - 在 Web 角色中,我们也可以像在 Worker Roles 中那样实现 RoleEntryPoint。它的实例将存在于 Web Role 上的 WaIISHost.exe 进程中。无论如何,这个过程总是存在的。只有在完成所有 IIS 更改并且站点准备好运行后,才会调用 OnStart。
-
谢谢两位,试试看。在 Twitter 上也有一个建议,我将尝试在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\{version} 中添加一个名为 MaxConcurrentRequestsPerCPU 的注册表 DWORD
-
你试过用Powershell替换值然后部署吗?
-
“appConcurrentRequestLimit 和 requestQueueLimit 设置很容易更改” -
appcmd set config /section:system.webserver/serverRuntime /appConcurrentRequestLimit:100000、appcmd set config /section:processModel /autoConfig:false /commit:MACHINE和appcmd set config /section:processModel /requestQueueLimit:250000 /commit:MACHINE
标签: azure signalr azure-web-roles azure-cloud-services appcmd