2016-03-20 10 views
8

Nelle ultime due settimane abbiamo esaminato alcuni problemi di prestazioni in cui la nostra applicazione MVC ha risposto molto lentamente per la prima richiesta. Stiamo parlando come 30-45 secondi per la prima richiesta e 3 secondi per ogni nuova vista. La nostra applicazione MVC utilizza la nostra OData API (Web API) che si trova sullo stesso server. Oltre agli stessi problemi di prestazioni dell'applicazione MVC, la prima query alla versione 6 di Entity Framework è in esecuzione in 6 secondi e le nuove query eseguono 200ms più lentamente delle query successive.I siti Web dei servizi di app di Azure hanno tempi di risposta lenti dopo un periodo di inattività

Per soddisfare i nostri requisiti, abbiamo scelto di eseguire tutte le query Ef conosciute e di raggiungere tutti i nostri endpoint MVC/API da Application_Start in Global.asax. Questo sembra funzionare bene per almeno un paio d'ore, ma dopo un po 'di tempo senza utilizzo, la prima richiesta ad ogni vista MVC sta rispondendo in 3-5 secondi.

Abbiamo configurato i siti Web "Sempre attivo" e non abbiamo trovato nulla nei registri IIS o nella registrazione che abbiamo aggiunto a Application_Start. Quindi sembra che le nostre applicazioni siano almeno non riciclate. Sospetto che qualche tipo di cache IIS venga cancellata o forse qualche cache Ef? Qualsiasi suggerimento è benvenuto.

+1

Un intervento rapido può essere quello di creare uno sfondo Lavoro che eseguirà il ping del sito Web frequentemente per evitare lo stato di inattività della webApp. – Dev

+0

Potresti risolvere il tuo problema? Stiamo riscontrando lo stesso problema con la nostra app MVC che sta rallentando la prima richiesta dopo l'inattività. Anche se "Sempre attivo" è abilitato. Secondo il log che stiamo scrivendo su Application_Start l'applicazione non si riavvia quindi deve essere qualcos'altro ... :( –

+0

Sembra che il nostro problema sia la compilazione di query EF sui siti Web di Azure. Abbiamo ottenuto un paio di query .Include query sul nostro Endpoint API che la nostra app MVC sta consumando. Sembra che ci vogliano fino a 1 secondo per ogni compilazione di query che è molto tempo. Finora abbiamo impostato un servizio di polling temporaneo in modo che la compilazione delle query avvenga prima che i nostri clienti colpiscano il nostro sito Web. –

risposta

0

Un intervento rapido può essere quello di creare uno sfondo Lavoro che esegue il ping del sito Web frequentemente per evitare lo stato di inattività della webApp.

O

tenta di aggiornare prova piano & SQL Server db di conseguenza.

Buona fortuna & spero che questo aiuti.

4

Dovrai abilitare l'impostazione "Sempre attivo" per la tua app web.

Potete farlo da portal.azure.com -> lama del tuo sito -> Tutte le impostazioni -> Impostazioni applicazione -> Sempre in

Vedi qui per maggiori dettagli: https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/

Quando Sempre attivo è disattivato , dopo 20 minuti di inattività, il sito viene rimosso per liberare risorse per altri siti che potrebbero essere in esecuzione sullo stesso piano di servizio app.

+0

L'aumento del timeout della sessione aiuterà il sito Web a essere vivo? –

+0

@AdityaBokade no, non ha alcun effetto –

+0

"Abbiamo configurato i siti web come" Sempre attivi "" – EscapeNetscape

2

Ho riscontrato lo stesso problema e purtroppo l'impostazione "Sempre attivo" non è disponibile nei livelli di prezzo gratuiti e condivisi. Ho trovato un modo semplice per mantenere calda l'app Web in modo che non si scarichi, in modo da impostare un test ping Application Insights su un intervallo di 15 minuti contro l'URL dell'app Wep. Una procedura dettagliata su come trovarla here

+1

Ottimo suggerimento. – rolls

0

Hai provato a indagare su questo problema abilitando la registrazione delle richieste non riuscite ?

Azure Portale → vostro servizio applicazione → Monitoraggio → Diagnostica logs → richiesta non riuscita tracing (On)

ho sperimentato un problema simile che è stato causato limitando l'accesso all'applicazione utilizzando la sezione ipSecurity in web.config. Se ti capita di limitare l'accesso in questo modo, devi autorizzare l'IP del tuo servizio app.

+0

Ho riscontrato lo stesso problema. Sempre attivo è attivo, gli indirizzi IP sono autorizzati e i messaggi di Sempre attivi vengono registrati correttamente. E ancora dopo un po 'di inattività la prima richiesta richiede molto tempo. Ancor più, poche prime richieste sono lente. Poi tutto va bene e dopo 20-30 richieste tutte rallentano di nuovo per iniziare a funzionare come dovrebbe. – Megrez7

+1

Hai controllato di nuovo i log delle richieste fallite? Sembra che la richiesta AlwaysOn ora provenga da ':: 1' (IPv6 per 127.0.0.1) invece dell'IP del servizio app. – tilo