Optymalizacja skuteczności zaczyna się od określenia kluczowych wskaźników, zwykle związanych z opóźnieniem i przepustowością. Dodanie monitorowania w celu rejestrowania i śledzenia tych wskaźników ujawnia słabe punkty w aplikacji. Dzięki wskaźnikom można przeprowadzić optymalizację, aby poprawić wskaźniki skuteczności.
Dodatkowo wiele narzędzi do monitorowania umożliwia konfigurowanie alertów dotyczących wskaźników, dzięki czemu otrzymujesz powiadomienia, gdy zostanie osiągnięty określony próg. Możesz na przykład skonfigurować alert, który będzie Cię powiadamiał, gdy odsetek nieudanych żądań wzrośnie o więcej niż X% w stosunku do normalnego poziomu. Narzędzia do monitorowania mogą pomóc Ci określić, jak wygląda normalna skuteczność, oraz wykryć nietypowe skoki opóźnienia, liczby błędów i innych kluczowych wskaźników. Możliwość monitorowania tych wskaźników jest szczególnie ważna w krytycznych okresach dla firmy lub po wdrożeniu nowego kodu.
Określanie wskaźników opóźnienia
Zadbaj o to, aby interfejs użytkownika był jak najbardziej responsywny. Pamiętaj, że użytkownicy oczekują jeszcze wyższych standardów od aplikacji mobilnych. Opóźnienie należy też mierzyć i śledzić w przypadku usług backendowych, zwłaszcza że może ono prowadzić do problemów z przepustowością, jeśli nie będzie kontrolowane.
Sugerowane wskaźniki do śledzenia:
- Czas trwania żądania
- Czas trwania żądania w podsystemie (np. wywołania interfejsu API)
- Czas trwania zadania
Określanie wskaźników przepustowości
Przepustowość to miara łącznej liczby żądań obsłużonych w danym okresie. Na przepustowość może wpływać opóźnienie podsystemów, dlatego aby ją poprawić, może być konieczna optymalizacja pod kątem opóźnienia.
Oto kilka sugerowanych wskaźników do śledzenia:
- Zapytania na sekundę
- Rozmiar danych przesyłanych na sekundę
- Liczba operacji wejścia/wyjścia na sekundę
- Wykorzystanie zasobów, np. procesora lub wykorzystanie pamięci
- Rozmiar zaległości w przetwarzaniu, np. pub/sub lub liczba wątków
Nie tylko średnia
Częstym błędem przy pomiarze skuteczności jest uwzględnianie tylko średniej (przeciętnej). Chociaż jest to przydatne, nie daje wglądu w rozkład opóźnienia. Lepszym wskaźnikiem do śledzenia są percentyle skuteczności, np. 50., 75., 90. i 99. percentyl danego wskaźnika.
Optymalizację można zwykle przeprowadzić w 2 krokach. Najpierw zoptymalizuj opóźnienie w 90. percentylu. Następnie rozważ 99. percentyl, czyli opóźnienie ogona – niewielką część żądań, których realizacja trwa znacznie dłużej.
Monitorowanie po stronie serwera w celu uzyskania szczegółowych wyników
Do śledzenia wskaźników zwykle preferowane jest profilowanie po stronie serwera. Stronę serwera jest zwykle znacznie łatwiej instrumentować, umożliwia ona dostęp do bardziej szczegółowych danych i jest mniej podatna na zakłócenia spowodowane problemami z łącznością.
Monitorowanie w przeglądarce w celu uzyskania pełnego wglądu
Jeśli integracja z interfejsem Google Ads API obsługuje frontend internetowy dla użytkowników, profilowanie w przeglądarce może dostarczyć dodatkowych informacji o wrażeniach użytkownika. Może ono pokazać, które strony mają wolne żądania, co można następnie powiązać z monitorowaniem po stronie serwera w celu dalszej analizy.
Google Analytics zapewnia też gotowe monitorowanie czasu wczytywania strony w raporcie Czas wczytywania strony w Analytics. Dzięki temu możesz uzyskać kilka przydatnych widoków, które pomogą Ci zrozumieć wrażenia użytkownika w Twojej witrynie, w szczególności:
- Czas wczytywania strony
- Czas wczytywania przekierowania
- Czas reakcji serwera
Monitorowanie w chmurze
Do rejestrowania i monitorowania wskaźników skuteczności aplikacji możesz używać wielu narzędzi. Możesz na przykład użyć Cloud Logging, aby rejestrować wskaźniki skuteczności w projekcie Google Cloud, a następnie skonfigurować panele w Cloud Monitoring, aby monitorować i segmentować zarejestrowane wskaźniki.
W przewodniku po logowaniu znajdziesz przykład
niestandardowego interceptora logowania gRPC napisanego dla
biblioteki klienta Python. W tym przykładzie interceptor wywołuje funkcję logger.log_struct(), aby wysłać słownik Pythona z uporządkowanymi danymi logu do Cloud Logging, które Cloud Logging przechowuje w polu jsonPayload wpisu logu:
logger.log_struct({
"method": method_name,
"elapsed_ms": elapsed_milliseconds,
"is_fault": is_fault,
})
Dzięki tym danym dostępnym w Google Cloud możesz tworzyć wskaźniki na podstawie zarejestrowanych danych, aby uzyskać wgląd w aplikację za pomocą Cloud Monitoring. Aby tworzyć wskaźniki na podstawie logów wysyłanych do Cloud Logging, postępuj zgodnie z instrukcjami w przewodniku po wskaźnikach opartych na logach zdefiniowanych przez użytkownika.
Możesz też użyć bibliotek klienta Cloud Monitoring, aby zdefiniować wskaźniki w kodzie i wysyłać je bezpośrednio do usługi Monitoring, oddzielnie od logów.
Przykład wskaźników opartych na logach
Załóżmy, że chcesz monitorować wartość is_fault, aby lepiej zrozumieć współczynniki błędów w aplikacji. Ponieważ logger.log_struct() zapisuje uporządkowane
pola słownika w polu jsonPayload w każdym wpisie Cloud Logging, możesz
utworzyć wskaźnik licznika o nazwie ErrorCount z filtrem, który
pasuje do nieudanych żądań, np. jsonPayload.is_fault = true.
W Cloud Logging etykiety umożliwiają grupowanie wskaźników w
kategorie na podstawie innych danych w logach. Możesz skonfigurować etykietę STRINGo nazwie Method w polu jsonPayload.methodwysyłanym do Cloud Logging aby podzielić liczbę błędów według metody interfejsu Google Ads API.
Po skonfigurowaniu wskaźnika ErrorCount i etykiety Method możesz
utworzyć nowy wykres w Cloud Monitoring do monitorowania
ErrorCount pogrupowane według Method.
Alerty
W Cloud Monitoring i innych narzędziach możesz skonfigurować zasady tworzenia alertów, które określają, kiedy i jak alerty mają być wywoływane przez wskaźniki. Instrukcje konfigurowania alertów Cloud Monitoring znajdziesz w przewodniku po alertach dotyczących wskaźników opartych na logach.