2015-04-24 11 views
11

Ho cercato questo errore che si verifica a intermittenza su una chiamata AJAX a un sito Web ASP.NET di Azure e che oggi ho finalmente rilevato nei nostri registri. Sospettavo che un blocco bloccasse l'operazione, ma sembra che non sia riuscito a connettersi al database SQL di Azure.Timeout connessione intermittente in SQL Azure su richiesta AJAX

Ecco il messaggio di eccezione:

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 
This failure occurred while attempting to connect to the routing destination. 
The duration spent while attempting to connect to the original server was - 
[Pre-Login] initialization=28; handshake=43; [Login] initialization=0; authentication=0; [Post-Login] complete=2; 

Questa è la stringa di connessione che sto usando:

Server=tcp:<server>,1433;Database=<database>;User ID=<user>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30 

Sia il sito web e il database SQL Azure sono nella stessa regione. La scala del database è Standard - S0 e il sito Web di Azure è uno standard - Piccola istanza.

Qualcuno di voi ha riscontrato questo problema?

+1

Ciò avviene in modo intermittente o coerente? Avete una gestione transitoria dei guasti e una logica di riprova integrata nel vostro codice? Leggi http://azure.microsoft.com/en-us/documentation/articles/sql-database-connect-central-recommendations/ per consigli e best practice. – Shantanu

+0

@ Shantanu Grazie per il suggerimento. Penso che l'utilizzo della gestione dei guasti transitori sia la soluzione giusta, ma forse non per il problema che sto cercando di risolvere. L'applicazione è una serie di domande che un utente chiede a un individuo al telefono, quindi registra la risposta. Causa problemi all'utente se questo richiede più di 5 secondi. Ho aggiornato il database a Standard S2 che sembra aver risolto il problema di timeout. – TheJesterCrown

+0

Che tipo di carico vedi per la tua app? Quanti utenti concorrenti? – Shantanu

risposta

1

Sembra che il problema sia nella connessione dal client a Internet. Se si sta effettuando la chiamata Ajax in JavaScript lato client, non importa (almeno per quanto riguarda le prestazioni) se l'app Web e il database si trovano nella stessa regione. Una connessione molto lenta chiamerà un timeout.

Poiché questo è intermittente, suggerisco di rilevare questo errore in JavaScript e di consentire al client di riprovare il salvataggio.

+2

La connessione in errore era tra il server Web (ad esempio App Web di Azure) e il server di database (SQL di Azure). Credo che il mio problema fosse la dimensione dell'istanza che stavo usando in Azure SQL, che era S0 (ho aggiunto un commento @AKS sopra). Grazie per il suggerimento però! Avrei dovuto pubblicare la mia risoluzione dopo aver risolto il mio problema. – TheJesterCrown

Problemi correlati