Udostępnij za pośrednictwem


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 mogą być często identyfikowane przez monitorowanie metryk 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

Należy monitorować dostępność usług magazynu na koncie magazynu, monitorując wartość metryki Dostępność . Metryka Dostępność zawiera wartość procentową. Jest obliczana przez pobranie łącznej wartości żądań podlegających rozliczaniu i podzielenie jej przez liczbę odpowiednich żądań, w tym tych, 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 oczekiwać, że dostępność spadnie tymczasowo poniżej 100% z powodów, takich jak przejściowe przekroczenia limitu czasu serwera, 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. Metryka Dostępność będzie dostępna tylko w okresach, w których transakcje również występują na koncie.

Możesz użyć funkcji w usłudze Azure Monitor, aby otrzymywać alerty, jeśli dostępność usługi spadnie poniżej określonego progu.

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

Błędy ograniczania występują w przypadku przekroczenia wartości docelowych skalowalności usługi magazynu. Ograniczenie usługi magazynu w celu zapewnienia, że żaden pojedynczy klient lub dzierżawa nie może korzystać z usługi kosztem innych. Aby uzyskać więcej informacji, zobacz Cele skalowalności i wydajności dla kont magazynu w warstwie Standardowa, aby uzyskać szczegółowe informacje na temat celów skalowalności dla kont magazynu i celów wydajności dla partycji w ramach kont 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
  • Stały wzrost błędu PercentThrottlingError

Zwiększenie liczby błędów ograniczania często występuje w tym samym czasie co wzrost liczby żądań magazynu lub podczas początkowego testowania obciążenia aplikacji. Może to również manifestować się w kliencie jako "503 Server Busy" lub "500 Operation Timeout" komunikaty o stanie HTTP z operacji magazynu.

Przejściowy wzrost liczby 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 dla aplikacji, implementujesz strategię wycofywania wykładniczego (a nie liniowego) dla ponownych prób w kliencie. Ponawianie prób wycofywania zmniejsza natychmiastowe obciążenie partycji i pomaga aplikacji wygładzić skoki ruchu. Aby uzyskać więcej informacji na temat implementowania zasad ponawiania przy użyciu biblioteki klienta magazynu, zobacz właściwość RetryOptions.MaxRetries .

Uwaga 16.

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

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

Jeśli widzisz stale wysoką wartość błędów ograniczania przepustowości po stałym wzroście woluminów transakcji lub podczas przeprowadzania 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 liczy się jako pojedyncza partycja), rozważ użycie dodatkowych kolejek w celu rozłożenia transakcji na wiele partycji. Jeśli w tabeli występują błędy ograniczania przepustowości, rozważ użycie innego schematu partycjonowania w celu rozłożenia transakcji na wiele partycji przy użyciu szerszego zakresu wartości klucza partycji. Jedną z typowych przyczyn tego problemu jest wstępny/dołączany antywzór, w którym wybierasz datę jako klucz partycji, a następnie wszystkie dane w danym dniu są zapisywane w jednej partycji (pod obciążeniem 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 złagodzenia wzorca żądań.

Jeśli transakcje są dystrybuowane na wiele partycji, nadal należy pamiętać o limitach skalowalności ustawionych dla konta magazynu. Jeśli na przykład użyto 10 kolejek, każde przetwarzanie maksymalnie 2000 1 KB komunikatów na sekundę, zostanie osiągnięty całkowity limit 20 000 komunikatów na sekundę dla konta magazynu. Jeśli musisz przetworzyć ponad 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, być może wcześniej będzie ograniczona.

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

Uwaga 16.

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

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

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

Metryki pokazują wzrost liczby 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 16.

Błędy przekroczenia limitu czasu mogą zostać tymczasowo wyświetlone, ponieważ usługa magazynu równoważy żądania, przenosząc partycję na nowy serwer.

Przekroczenia limitu czasu serwera (ServerTimeOutError) są spowodowane błędem na serwerze. Limity 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 dla operacji.

Przekroczenia limitu czasu serwera wskazują 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 identyfikujesz wszelkie skoki ruchu, które mogą powodować ten problem. 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 tym, że aplikacja osiąga limity skalowalności usługi, należy zgłosić problem z pomocą techniczną. W przypadku przekroczenia limitu czasu klienta musisz zdecydować, czy limit czasu jest ustawiony na odpowiednią wartość w kliencie i zmienić wartość limitu czasu ustawioną w kliencie lub zbadać, jak można poprawić wydajność operacji w usłudze magazynu, na przykład przez optymalizację zapytań tabeli lub zmniejszenie rozmiaru komunikatów.

Metryki pokazują wzrost błędów sieci

Błędy sieci występują, gdy wymiar ResponseType jest równy wartości 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 rozłączenie klienta przed upływem limitu czasu w usłudze magazynu. Zbadaj kod w kliencie, aby dowiedzieć się, dlaczego i kiedy klient rozłącza się z usługą magazynu. Możesz również użyć narzędzi do analizy sieci innych firm, aby zbadać problemy z łącznością sieciową od 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 na temat platformy Azure.