Optymalizacja wydajności zaczyna się od określenia kluczowych danych, zwykle związanych z opóźnieniem i przepustowością. Dodanie monitorowania w celu rejestrowania i śledzenia tych wskaźników ujawnia słabe punkty aplikacji. Dzięki danym można przeprowadzić optymalizację, aby poprawić wskaźniki skuteczności.
Dodatkowo wiele narzędzi do monitorowania umożliwia skonfigurowanie alertów dotyczących danych, dzięki czemu otrzymasz powiadomienie, gdy zostanie osiągnięty określony próg. Możesz na przykład skonfigurować alert, który powiadomi Cię, gdy odsetek nieudanych żądań wzrośnie o ponad X% w stosunku do normalnego poziomu. Narzędzia do monitorowania mogą pomóc Ci określić, jak wygląda normalna wydajność, i zidentyfikować nietypowe skoki opóźnienia, liczby błędów i innych kluczowych wskaźników. Możliwość monitorowania tych danych jest szczególnie ważna w okresach krytycznych dla firmy lub po wprowadzeniu nowego kodu do środowiska produkcyjnego.
Identyfikowanie wskaźników czasu oczekiwania
Zadbaj o to, aby interfejs był jak najbardziej elastyczny, pamiętając, że użytkownicy oczekują jeszcze wyższych standardów od aplikacji mobilnych. Opóźnienie powinno być też mierzone i śledzone w przypadku usług backendu, zwłaszcza że jeśli nie będzie kontrolowane, może prowadzić do problemów z przepustowością.
Zalecane dane do śledzenia:
- Czas trwania żądania
- czas trwania żądania na poziomie szczegółowości podsystemu (np. wywołania interfejsu API);
- Czas trwania zadania
Identyfikowanie wskaźników przepustowości
Przepustowość to miara łącznej liczby żądań obsłużonych w danym okresie. Na przepustowość może wpływać czas oczekiwania podsystemów, więc aby zwiększyć przepustowość, może być konieczne zoptymalizowanie czasu oczekiwania.
Oto kilka sugerowanych danych, które warto śledzić:
- 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 podczas pomiaru wydajności jest branie pod uwagę tylko średniej. Jest to przydatne, ale nie daje wglądu w rozkład opóźnień. Lepszym wskaźnikiem do śledzenia są percentyle wydajności, np. 50, 75, 90 i 99 percentyl dla danego wskaźnika.
Optymalizację można przeprowadzić w 2 etapach. Po pierwsze, zoptymalizuj opóźnienie pod kątem 90 percentyla. Następnie weź pod uwagę 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 danych zwykle preferowane jest profilowanie po stronie serwera. Strona serwera jest zwykle znacznie łatwiejsza do instrumentacji, umożliwia dostęp do bardziej szczegółowych danych i jest mniej podatna na zakłócenia spowodowane problemami z połączeniem.
Monitorowanie przeglądarki pod kątem kompleksowej widoczności
Jeśli integracja z interfejsem Google Ads API udostępnia użytkownikom interfejs internetowy, profilowanie przeglądarki może dostarczyć dodatkowych informacji o wrażeniach użytkowników. Może pokazywać, które strony mają powolne żądania, co można następnie powiązać z monitorowaniem po stronie serwera w celu dalszej analizy.
Google Analytics udostępnia też gotowe do użycia narzędzie do monitorowania czasu wczytywania strony w raporcie Analytics Czas wczytywania. Zapewnia on kilka przydatnych widoków, które pomagają zrozumieć wrażenia użytkowników w witrynie, w szczególności:
- Czas wczytywania strony
- Czas wczytywania przekierowania
- Czas odpowiedzi serwera
Monitorowanie w chmurze
Istnieje wiele narzędzi, których możesz używać do rejestrowania i monitorowania wskaźników skuteczności aplikacji. Możesz na przykład użyć Google Cloud Logging, aby rejestrować wskaźniki wydajności w projekcie Google Cloud, a następnie skonfigurować panele w Google Cloud Monitoring, aby monitorować i segmentować zarejestrowane wskaźniki.
W przewodniku po logowaniu znajdziesz przykład niestandardowego przechwytywacza logowania gRPC napisanego dla biblioteki klienta w Pythonie. 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 zapisanych danych, aby uzyskać wgląd w aplikację za pomocą Google Cloud Monitoring. Postępuj zgodnie z przewodnikiem po wskaźnikach opartych na logach zdefiniowanych przez użytkownika, aby utworzyć wskaźniki przy użyciu logów wysyłanych do Google Cloud Logging.
Możesz też użyć bibliotek klienta Cloud Monitoring, aby zdefiniować wskaźniki w kodzie i wysłać je bezpośrednio do usługi Monitoring, niezależnie od logów.
Przykład wskaźników opartych na logach
Załóżmy, że chcesz monitorować wartość is_fault, aby lepiej zrozumieć odsetek błędów w aplikacji. logger.log_struct() zapisuje pola słownika strukturalnego w jsonPayload w każdym wpisie Cloud Logging, więc 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ę STRING o nazwie Method w polu jsonPayload.method wysył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, aby monitorować wskaźnik ErrorCount pogrupowany według etykiety Method.
Alerty
W Cloud Monitoring i innych narzędziach można skonfigurować zasady tworzenia alertów, które określają, kiedy i jak alerty powinny 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.