【问题标题】:Updating aspnet.config on Azure Web Role在 Azure Web 角色上更新 aspnet.config
【发布时间】: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:100000appcmd set config /section:processModel /autoConfig:false /commit:MACHINEappcmd set config /section:processModel /requestQueueLimit:250000 /commit:MACHINE

标签: azure signalr azure-web-roles azure-cloud-services appcmd


【解决方案1】:

我最终使用了以下基于注册表的方法,它允许我在不使用 aspnet.config 的情况下更改 maxConcurrentRequestsPerCPU 设置

我将 REG 命令行实用程序的以下用法添加到我现有的 startup.cmd(已用于调用 APPCMD 以更改其他设置):

REG ADD HKLM\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0 /v MaxConcurrentRequestsPerCPU /t REG_DWORD /d 10000
REG ADD HKLM\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\4.0.30319.0 /v MaxConcurrentRequestsPerCPU /t REG_DWORD /d 10000

这将配置 32 位和 64 位应用程序池,尽管在本例中我只需要 64 个。

【讨论】:

  • 如果你在启动任务中使用,不要忘记最后/f,否则它会等待第二次输入。
  • 注册表更改是否覆盖aspnet.config xml 文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2014-11-19
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多