2015-01-13 20 views
6

Possiedo una soluzione SignalR distribuita in un ruolo Web di Azure (servizio cloud, non sito Web di Azure) e per garantire che possiamo massimizzare il numero di connessioni a ogni istanza di cui ho bisogno per apportare alcune modifiche alle varie impostazioni di ASP.NET come descritto in questo articolo: http://www.asp.net/signalr/overview/performance/signalr-performance#tuningAggiornamento di aspnet.config su ruolo Web di Azure

Le impostazioni di appConcurrentRequestLimit e requestQueueLimit sono state modificate facilmente con un'attività di avvio che utilizza APPCMD per apportare le modifiche rilevanti. Tuttavia, l'impostazione maxConcurrentRequestsPerCPU si trova nel file aspnet.config che non può essere modificato tramite lo stesso meccanismo.

Ho provato ad aggiornare il file direttamente con un'attività di avvio (solo una sostituzione di base del file per ora), tuttavia sembra essere stato sostituito dal runtime di Azure dopo che le attività di avvio sono state completate e quindi la modifica è andata persa. RDP posso entrare nella macchina e apportare la modifica manualmente, quindi ho visto che funziona comunque che non è sostenibile per un servizio che prevediamo di scalare su e giù su richiesta.

Qualsiasi idea su come modificare questa impostazione in un ambiente Azure sarebbe apprezzata!

+1

Forse potresti usare la classe 'ServerManager' e modificare la configurazione. Non ho nemmeno iniziato a provare questo però. – sharptooth

+0

solo un altro colpo cieco: ho provato a sostituire quel file da OnStart di una classe RoleEntryPoint - nei ruoli Web possiamo anche avere un'implementazione RoleEntryPoint come facciamo nei ruoli Worker. La sua istanza vivrà nel processo WaIISHost.exe sul ruolo Web. Questo processo è sempre lì comunque. E OnStart verrà chiamato solo dopo aver apportato tutte le modifiche a IIS e il sito è pronto per essere eseguito. – astaykov

+0

Grazie a entrambi, proverai. Ho anche ricevuto un suggerimento su Twitter che cercherò di aggiungere un DWORD di registro denominato MaxConcurrentRequestsPerCPU in HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ {versione} – Ben

risposta

6

ho finito per usare il seguente approccio basato registro che mi ha permesso di cambiare l'impostazione maxConcurrentRequestsPerCPU senza utilizzare aspnet.config

ho aggiunto il seguente utilizzo della linea di comando REG alla mia STARTUP.CMD esistente (già in utilizzare per chiamare APPCMD per modificare altre impostazioni):

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 

Ciò configurare entrambi i pool di applicazioni a 32 bit e 64, anche se ho solo bisogno di 64 in questo caso.

+2

Se si sta utilizzando un'attività di avvio, non dimenticare '/ f' alla fine o attenderà l'input per la seconda volta. – Dunc

Problemi correlati