Quanto sono simultanee le richieste in realtà? Verranno digitati tutti esattamente nello stesso momento?
Detto questo, profilo localmente la tua app, questo ti permetterà di stimare l'utilizzo della CPU, della rete e della memoria su Azure. Quindi, piuttosto che guardare quante istanze hai bisogno, guarda come puoi ridurre il requisito! Applicare nuovamente questi suggerimenti e il profilo in locale.
La maggior parte dei suggerimenti per le prestazioni ha un compromesso tra l'utilizzo della cpu, della memoria o della larghezza di banda, l'idea è di garantire che abbiano una scala uguale. Se la tua applicazione ha esaurito la memoria, ma hai un sacco di CPU e rete, non Per un sondaggio a pagina singola, assicurati che il tuo html, css & js sia minimizzato, assicurati che sia memorizzato nella cache.
Combinarli se possibile e per ottenere una scalabilità davvero efficace, è possibile trasferire file statici (css, js & immagini) in un CDN. Tutto ciò riduce il numero di richieste che il server web deve affrontare e quindi riduce il numero di webroles di cui avrai bisogno = meno rete.
Come restituisce la risposta l'ashx? cioè sta inviando html, xml o json? personalmente, vorrei che restituisse JSON, in quanto ciò richiederà meno larghezza di banda di rete e molto probabilmente meno elaborazione lato server = meno memoria e rete.
Uso asincrono API per accedere stoccaggio azure (puo utilizza porte di completamento IO per liberare il filo IIS per gestire più richieste fino stoccaggio azzurro torna = consentendo CPU in scala)
tijmenvdk ha già menzionato utilizzando code per scrivere . L'elenco delle domande cambia? in caso contrario, memorizzali nella cache, in modo che l'app debba solo leggere dalla memoria della tabella una volta all'avvio e una volta per ogni client per il wrap-up finale = salva la rete e la cpu a spese della memoria.
Tutti questi suggerimenti sono ugualmente applicabili a una normale applicazione Web, su un singolo server o ambiente Web-farm.
Il punto che sto cercando di fare è che ciò che non si può misurare, non si può migliorare, e la misurazione, il miglioramento e il costo vanno tutti di pari passo. Il ridimensionamento dinamico ridurrà i costi, ma fondamentalmente se la vostra applicazione non è stata misurata e l'utilizzo delle risorse ottimizzato, chiedendo quante istanze avete bisogno è inutile.
Ciao Tijmen, grazie per le tue osservazioni. Abbiamo iniziato i test di carico, ma visto che sono piuttosto nuovo su questo argomento è sempre bene cercare di non reinventare la ruota ... Il sondaggio è in qualche modo diverso: tutti i 30.000 visitatori stanno guardando uno spettacolo e risponderanno alla domanda allo stesso tempo . Questo aumenterà le richieste al secondo a circa 10.000. Usiamo il caching, le classi singleton e stiamo ottimizzando la soluzione in questo momento per renderla il più snella possibile. Ci immergeremo nel monitoraggio e aggiungendo risorse immediatamente! –
Per questo tipo di velocità effettiva, esaminare la differenza di prestazioni tra la scrittura in una coda di Azure anziché direttamente in una tabella di Azure ... la coda dovrebbe essere più veloce, si potrebbe ottenere un risultato perfetto. È necessario scrivere un ruolo di lavoratore per elaborare i dati nella coda, ma questo non è nel percorso critico. Indipendentemente dalla soluzione, assicurati di rivedere il tempo di esecuzione della richiesta per tutti gli hit (e non le medie), per assicurarti che non ci sia ~ 10% di hit che impiegano troppo tempo senza che vengano visualizzati sui valori medi. – tijmenvdk