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.
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
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 ... :( –
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. –