2015-01-13 3 views
6

У меня есть решение SignalR, которое развернуто на Azure Web Role (облачный сервис, а не на Azure Web Site), и чтобы мы могли максимально увеличить количество подключений к каждому экземпляру, который мне нужен чтобы внести некоторые изменения в различные параметры ASP.NET, подробно описанные в этой статье:Обновление aspnet.config на роли Azure Web

Параметры appConcurrentRequestLimit и requestQueueLimit были легко изменены с помощью задачи запуска, использующей APPCMD для внесения соответствующих изменений. Однако параметр maxConcurrentRequestsPerCPU находится в файле aspnet.config, который нельзя изменить с помощью того же механизма.

Я пробовал обновлять этот файл непосредственно с помощью задачи запуска (сейчас это просто базовая замена файла), однако, похоже, она заменяется временем выполнения Azure после завершения задач запуска, и поэтому изменение теряется. Я могу запустить RDP в машину и внести изменения вручную, поэтому я видел, что он работает, однако это не является устойчивым для службы, которую мы ожидаем масштабировать вверх и вниз по требованию.

Любые идеи о том, как изменить эту настройку в среде Azure, будут оценены!

+1

Возможно, вы можете использовать класс 'ServerManager' и изменить конфигурацию. Даже не начал это пытаться. – sharptooth

+0

просто еще один слепой снимок: попытались заменить этот файл на OnStart класса RoleEntryPoint - в веб-ролях мы также можем иметь реализацию RoleEntryPoint, как в Ролях Работ. Его экземпляр будет находиться в процессе WaIISHost.exe в роли Web. Этот процесс всегда присутствует. И OnStart будет вызываться только после того, как будут сделаны изменения IIS, и сайт будет готов к запуску. – astaykov

+0

Спасибо, дайте им попробовать. Также было предложено в Twitter, которое я попытаюсь добавить в DWORD реестра с именем MaxConcurrentRequestsPerCPU в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ {version} – Ben

ответ

6

Я закончил с использованием следующего реестра на основе подхода, который позволил мне изменить настройку maxConcurrentRequestsPerCPU без использования aspnet.config

Я добавил следующее использование утилиты командной строки 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 в этом случае.

+2

Если вы используете в задаче запуска, не забудьте '/ f' в конце или он будет ждать ввода во второй раз. – Dunc

Смежные вопросы