Rozwiązywanie problemów z dostępnością na kontach usługi Azure Storage

Ten artykuł ułatwia badanie zmian dostępności (takich jak liczba żądań zakończonych niepowodzeniem). Te zmiany dostępności można często zidentyfikować, monitorując metryki magazynu w usłudze Azure Monitor. Aby uzyskać ogólne informacje na temat korzystania z metryk i dzienników w usłudze Azure Monitor, zobacz następujące artykuły:

Monitorowanie dostępności

Dostępność usług magazynu na koncie magazynu należy monitorować, monitorując wartość metryki Dostępność . Metryka Dostępność zawiera wartość procentową. Jest obliczana przez pobranie łącznej wartości rozliczanych żądań i podzielenie jej przez liczbę odpowiednich żądań, w tym żądań, które wygenerowały nieoczekiwane błędy.

Każda wartość mniejsza niż 100% wskazuje, że niektóre żądania magazynu kończą się niepowodzeniem. Możesz zobaczyć, dlaczego kończą się niepowodzeniem, sprawdzając wymiar ResponseType pod kątem typów błędów, takich jak ServerTimeoutError. Należy się spodziewać, że dostępność spadnie tymczasowo poniżej 100% z powodów, takich jak przekroczenia limitu czasu serwera przejściowego, podczas gdy usługa przenosi partycje do lepszych żądań równoważenia obciążenia; logika ponawiania prób w aplikacji klienckiej powinna obsługiwać takie sporadyczne warunki.

Za pomocą funkcji w usłudze Azure Monitor możesz otrzymywać alerty, jeśli dostępność usługi spadnie poniżej określonego progu.

Metryki pokazują wzrost błędów ograniczania przepustowości

Błędy ograniczania przepustowości występują w przypadku przekroczenia wartości docelowych skalowalności usługi magazynu. Ogranicza usługi magazynu, aby upewnić się, że żaden pojedynczy klient lub dzierżawca nie może korzystać z usługi kosztem innych użytkowników. Aby uzyskać więcej informacji, zobacz Cele skalowalności i wydajności dla standardowych kont magazynu , aby uzyskać szczegółowe informacje na temat celów skalowalności dla kont magazynu i celów wydajności partycji na kontach magazynu.

Jeśli wartość ClientThrottlingError lub ServerBusyError wymiaru ResponseType pokazuje wzrost procentu żądań, które kończą się niepowodzeniem z powodu błędu ograniczania przepustowości, należy zbadać jeden z dwóch scenariuszy:

  • Przejściowy wzrost percentthrottlingError
  • Trwały wzrost błędu PercentThrottlingError

Wzrost liczby błędów ograniczania przepustowości często występuje w tym samym czasie, co wzrost liczby żądań magazynu lub podczas wstępnego testowania obciążenia aplikacji. Może to również przejawiać się w kliencie jako komunikaty stanu HTTP "503 Server Busy" lub "500 Operation Timeout" z operacji magazynu.

Przejściowy wzrost błędów ograniczania przepustowości

Jeśli występują skoki błędów ograniczania przepustowości, które pokrywają się z okresami wysokiej aktywności aplikacji, implementujesz strategię wycofywania wykładniczego (nie liniowego) dla ponownych prób w kliencie. Ponowne próby wycofywania zmniejszają natychmiastowe obciążenie partycji i pomagają aplikacji wygładzić skoki ruchu. Aby uzyskać więcej informacji o sposobie implementowania zasad ponawiania przy użyciu biblioteki klienta magazynu, zobacz właściwość RetryOptions.MaxRetries .

Uwaga

Mogą również wystąpić skoki błędów ograniczania przepustowości, które nie pokrywają się z okresami dużej aktywności aplikacji. Najbardziej prawdopodobną przyczyną jest przenoszenie partycji przez usługę magazynu w celu poprawy równoważenia obciążenia.

Trwały wzrost błędów ograniczania przepustowości

Jeśli widzisz stale wysoką wartość błędów ograniczania przepustowości po trwałym wzroście liczby transakcji lub podczas wykonywania początkowych testów obciążeniowych w aplikacji, musisz ocenić, jak aplikacja korzysta z partycji magazynu i czy zbliża się do celów skalowalności dla konta magazynu. Jeśli na przykład występują błędy ograniczania przepustowości w kolejce (która jest liczona jako pojedyncza partycja), rozważ użycie dodatkowych kolejek do rozłożenia transakcji na wiele partycji. Jeśli występują błędy ograniczania przepustowości w tabeli, rozważ użycie innego schematu partycjonowania, aby rozłożyć transakcje na wiele partycji przy użyciu szerszego zakresu wartości klucza partycji. Jedną z typowych przyczyn tego problemu jest antywzorzec przedpłaty/dołączania, w którym wybrano datę jako klucz partycji, a następnie wszystkie dane w danym dniu są zapisywane na jednej partycji (w ramach obciążenia może to spowodować wąskie gardło zapisu). Rozważ inny projekt partycjonowania lub oceń, czy użycie magazynu obiektów blob może być lepszym rozwiązaniem. Sprawdź również, czy ograniczanie przepustowości występuje z powodu skoków ruchu i zbadaj sposoby wygładzania wzorca żądań.

Jeśli transakcje są dystrybuowane między wiele partycji, nadal musisz pamiętać o limitach skalowalności ustawionych dla konta magazynu. Jeśli na przykład użyto 10 kolejek, z których każda przetwarza maksymalnie 2000 komunikatów 1 KB na sekundę, będziesz mieć całkowity limit 20 000 komunikatów na sekundę dla konta magazynu. Jeśli potrzebujesz przetworzyć więcej niż 20 000 jednostek na sekundę, rozważ użycie wielu kont magazynu. Należy również pamiętać, że rozmiar żądań i jednostek ma wpływ, gdy usługa magazynu ogranicza klientów. Jeśli masz większe żądania i jednostki, może nastąpić ograniczenie przepustowości wcześniej.

Nieefektywne projektowanie zapytań może również powodować osiągnięcie limitów skalowalności partycji tabel. Na przykład zapytanie z filtrem, które wybiera tylko jeden procent jednostek w partycji, ale skanuje wszystkie jednostki w partycji, będzie musiało uzyskać dostęp do każdej jednostki. Każdy odczyt jednostki będzie wliczany do całkowitej liczby transakcji w tej partycji. W związku z tym można łatwo osiągnąć cele skalowalności.

Uwaga

Testy wydajnościowe powinny ujawnić wszelkie nieefektywne projekty zapytań w aplikacji.

Metryki pokazują wzrost błędów przekroczenia limitu czasu

Błędy przekroczenia limitu czasu występują, gdy wymiar ResponseType jest równy ServerTimeoutError lub ClientTimeout.

Metryki pokazują wzrost błędów przekroczenia limitu czasu dla jednej z usług magazynu. W tym samym czasie klient otrzymuje dużą ilość komunikatów o stanie HTTP "500 Operation Timeout" z operacji magazynu.

Uwaga

Błędy przekroczenia limitu czasu mogą być tymczasowo widoczne, ponieważ obciążenie usługi magazynu równoważy żądania, przenosząc partycję na nowy serwer.

Przekroczenia limitu czasu serwera (ServerTimeOutError) są spowodowane przez błąd na serwerze. Przekroczenia limitu czasu klienta (ClientTimeout) występują, ponieważ operacja na serwerze przekroczyła limit czasu określony przez klienta. Na przykład klient korzystający z biblioteki klienta magazynu może ustawić limit czasu operacji.

Przekroczenia limitu czasu serwera wskazują na problem z usługą magazynu, która wymaga dalszego zbadania. Możesz użyć metryk, aby sprawdzić, czy osiągasz limity skalowalności dla usługi i zidentyfikować wszelkie skoki ruchu, które mogą być przyczyną tego problemu. Jeśli problem występuje sporadycznie, może to być spowodowane działaniem równoważenia obciążenia w usłudze. Jeśli problem jest trwały i nie jest spowodowany osiągnięciem przez aplikację limitów skalowalności usługi, należy zgłosić problem z pomocą techniczną. W przypadku przekroczenia limitu czasu klienta należy zdecydować, czy limit czasu jest ustawiony na odpowiednią wartość w kliencie i zmienić wartość limitu czasu ustawioną w kliencie lub zbadać, w jaki sposób można zwiększyć wydajność operacji w usłudze magazynu, na przykład optymalizując zapytania tabeli lub zmniejszając rozmiar komunikatów.

Metryki pokazują wzrost liczby błędów sieciowych

Błędy sieciowe występują, gdy wymiar ResponseType jest równy usłudze NetworkError. Występują one, gdy usługa magazynu wykryje błąd sieci, gdy klient wysyła żądanie magazynu.

Najczęstszą przyczyną tego błędu jest odłączenie klienta przed wygaśnięciem limitu czasu w usłudze magazynu. Zbadaj kod w kliencie, aby zrozumieć, dlaczego i kiedy klient odłącza się od usługi magazynu. Możesz również użyć narzędzi do analizy sieci innych firm, aby zbadać problemy z łącznością sieciową z klienta.

Zobacz też

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii platformy Azure.