Szukałem tego błędu, który występuje sporadycznie w wywołaniu AJAX do witryny Azure ASP.NET, a dziś w końcu udało mi się go znaleźć w naszych dziennikach. Podejrzewałem, że blokada blokuje operację, ale wygląda na to, że nie udało się połączyć z bazą danych Azure SQL.Limit czasu połączenia przerywanego w usłudze Azure SQL na żądanie AJAX
Oto wiadomość wyjątek:
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;
Jest to ciąg połączenia używam:
Server=tcp:<server>,1433;Database=<database>;User ID=<user>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30
Zarówno strona internetowa i baza danych SQL Azure są w tym samym regionie. Skala bazy danych to Standard - S0, a witryna Azure to Standard - Mała instancja.
Czy ktoś z was wpadł na ten problem?
Czy dzieje się to sporadycznie lub konsekwentnie? Czy masz przejściową obsługę błędów i logikę ponowną, wbudowaną w twój kod? Przeczytaj http://azure.microsoft.com/en-us/documentation/articles/sql-database-connect-central-recommendations/, aby uzyskać rekomendacje i najlepsze praktyki. – Shantanu
@Shantanu Dzięki za sugestię. Myślę, że używanie Transient Fault handling jest właściwym rozwiązaniem, ale może nie dla problemu, który próbuję rozwiązać. Aplikacja to seria pytań, które użytkownik prosi osobę przez telefon, a następnie zapisuje odpowiedź. Powoduje to problemy dla użytkownika, jeśli trwa to dłużej niż 5 sekund. Zaktualizowałem bazę danych do wersji Standard S2, która prawdopodobnie rozwiązała problem przekroczenia limitu czasu. – TheJesterCrown
Jaki rodzaj obciążenia widzisz dla swojej aplikacji? Ilu użytkowników jednocześnie? – Shantanu