2016-06-23 50 views
6

Recentemente ho riscontrato alcuni problemi di prestazioni piuttosto strani con SQL Azure/Web Apps/Entity Framework.Problemi di prestazioni SQL/EF di Azure

Sembrerebbe che occasionalmente le chiamate al database (sia query di lettura e scrittura) si blocchino per qualche istante tra pochi secondi e alcuni minuti (!). Ciò accade anche in una query di selezione su una tabella con 4 colonne contenenti 5 righe di dati.

Il problema sembra essere casuale e non è riproducibile. L'aggiornamento del DB a un livello di prestazioni più elevato sembra non avere alcun effetto. Sia l'app Web che il database sql azure si trovano nella stessa regione.

Il grafico delle prestazioni del DB è generalmente un rivestimento piatto intorno allo 0,5% dell'utilizzo delle risorse con un picco occasionale attorno al 5%, quindi il problema non dipende certo dai vincoli delle risorse.

Non avrei idea di come iniziare a indagare sulla questione data la sua natura intermittente. Apprezzerei molto qualsiasi feedback. La settimana scorsa il numero

Potrebbe avere qualcosa a che fare con il modo in cui Entity Framework gestisce le connessioni DB in modo specifico per l'azzurro sql? Il test sull'espressione SQL locale non ha mai causato nulla di simile.

+0

"Sembrerebbe che occasionalmente le chiamate al database (sia le query di lettura che di scrittura) si bloccherebbero dovunque tra pochi secondi e pochi minuti (!)" È necessario utilizzare alcuni strumenti come sql nexus e verificare cosa sta succedendo in database per un periodo di tempo. – TheGameiswar

+0

Sono sulla stessa barca, fammi sapere i possibili trucchi/correzione – Jaya

+0

Non ho ancora trovato una soluzione o la causa. Lo condividerò sicuramente quando lo capisco. –

risposta

2

Dopo aver affrontato problemi di prestazioni con Entity Framework, siamo finalmente passati a Dapper e abbiamo visto un enorme aumento delle prestazioni. Hanno alcuni punti di riferimento sulla loro pagina GitHub che mostra la differenza di velocità.

https://github.com/StackExchange/dapper-dot-net

Inoltre, non sono sicuro quale versione di EF che si sta utilizzando, ma se si tratta di EF core, le prestazioni di che è attualmente peggiore di quello delle precedenti versioni. Un altro confronto delle prestazioni può essere trovato qui: https://www.exceptionnotfound.net/dapper-vs-entity-framework-vs-ado-net-performance-benchmarking/.

+0

Grazie per il feedback! Cercherò ulteriormente Dapper. Sono su EF 6.1.3. In generale, le prestazioni sono accettabili (non è un'applicazione eccessivamente complessa). Esecuzione dell'applicazione localmente (su una VM con 2 core e 4GB di RAM) e SQL Express - funziona molto bene. I problemi sorgono con una "interruzione della connessione SQL Azure intermittente" (per la mancanza di un termine migliore). La connessione sembra bloccarsi per un periodo di tempo, da qualche secondo a qualche minuto.Suppongo che dovrei eseguire un semplice test con Drapper - per capire se una simile connessione si blocca con esso. –

0

Ok, sembra che abbia trovato una soluzione per i miei problemi di prestazioni - e per il semplice fatto di attivare più set di risultati attivi (https://msdn.microsoft.com/en-us/library/h32h3abf(v=vs.110).aspx) per la connessione.

Deve esserci stato qualche cambiamento nel quadro EF di circa 2 anni fa - poiché il problema è emerso solo dopo aver aggiornato a 6.1.3. Non sono sicuro di quale fosse la versione originale, ma era la versione corrente di 2 anni fa.

Spero che questo aiuti qualcun altro. Mi ha causato molto dolore e mi è costato un grande potenziale progetto.