Używamy aplikacji internetowej (2 wystąpienia) na platformie Azure, wspieranej przez bazę danych SQL Azure. W dowolnym momencie 50-150 użytkowników korzysta ze strony internetowej. Baza danych działa na poziomie wydajności S2. DTU wynosi średnio około 20%.Częstotliwości połączeń z częstym łączem SQL Azure
Jednak kilka razy dziennie nagle dostać setki błędów w moich dziennikach z limity czasu coś takiego:
Wystąpił błąd podczas wykonywania definicji poleceń. Zobacz wewnętrzny wyjątek, aby poznać szczegóły.
Przekroczono limit czasu oczekiwania.
Limit czasu wygasł. Okres oczekiwania upłynął przed zakończeniem operacji lub serwer nie odpowiada. To niepowodzenie wystąpiło podczas próby połączenia z miejscem docelowym routingu. Czas spędzony podczas próby połączenia z pierwotnym serwerem to - [Pre-Login] initialization = 1; handshake = 21; [Logowanie] inicjalizacja = 0; authentication = 0; [Po zalogowaniu] complete = 1;
Używamy EF6 do zapytań z domyślnym czasem oczekiwania na polecenia. Skonfigurowałem tę strategię wykonywania:
SetExecutionStrategy("System.Data.SqlClient",
() => new SqlAzureExecutionStrategy(10, TimeSpan.FromSeconds(15)));
Baza danych (łącznie około 15 GB) jest silnie indeksowana. Błędy te występują wszędzie, zwykle od dziesiątek do setek w ciągu 1-2 minut.
Co mogę zrobić, aby temu zapobiec?
Czy usługa aplikacji i baza danych SQL znajdują się w tym samym centrum danych? –
Tak, są one w tym samym regionie. – Knelis