Optymalizacja wydajnoś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 aplikacji. Dzięki danym można przeprowadzać optymalizację, aby poprawić wskaźniki wydajności.
Wiele narzędzi do monitorowania umożliwia też 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 wydajność, i wykrywać nietypowe skoki opóźnień, liczby błędów i innych kluczowych danych. Możliwość monitorowania tych danych jest szczególnie ważna w okresach krytycznych dla firmy lub po wdrożeniu nowego kodu w środowisku produkcyjnym.
Określanie wskaźników czasu oczekiwania
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. Należy też mierzyć i śledzić czas oczekiwania w przypadku usług backendu, zwłaszcza że niekontrolowany może prowadzić do problemów z przepustowością.
Zalecane wskaźniki do śledzenia to:
- Czas trwania żądania
- Czas trwania żądania z podziałem na podsystemy (np. wywołania interfejsu API)
- Czas trwania zadania
Określanie danych dotyczących przepustowości
Przepustowość to miara łącznej liczby żądań obsłużonych w danym okresie. Na przepustowość może wpływać opóźnienie podsystemów, więc aby ją zwiększyć, może być konieczna optymalizacja pod kątem opóźnienia.
Oto kilka sugerowanych danych 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 pamięci;
- Rozmiar zaległości w przetwarzaniu, np. publikowanie/subskrypcja lub liczba wątków.
Nie tylko średnia
Częstym błędem w pomiarze skuteczności jest uwzględnianie tylko średniej wartości. Chociaż jest to przydatne, nie daje wglądu w rozkład opóźnień. 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 na poziomie 90 percentyla. Następnie weź pod uwagę 99 percentyl, czyli tzw. 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. Zwykle łatwiej jest wdrożyć pomiary po stronie serwera, co umożliwia dostęp do bardziej szczegółowych danych i jest mniej podatne na zakłócenia spowodowane problemami z połączeniem.
Monitorowanie przeglądarki w celu uzyskania pełnej widoczności
Profilowanie przeglądarki może dostarczyć dodatkowych informacji o wrażeniach użytkowników. Może on pokazywać, które strony mają wolne żądania, co możesz następnie powiązać z monitorowaniem po stronie serwera w celu dalszej analizy.
Google Analytics zapewnia gotowe monitorowanie czasu wczytywania stron w raporcie o czasie wczytywania strony. Dzięki temu uzyskasz kilka przydatnych widoków, które pomogą Ci zrozumieć wrażenia użytkowników w Twojej witrynie, a w szczególności:
- Czas wczytywania strony
- Czas wczytywania przekierowania
- Czas reakcji serwera
Monitorowanie w chmurze
Do rejestrowania i monitorowania danych o skuteczności aplikacji możesz używać wielu narzędzi. 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 logowania do Cloud Logging z niestandardowego interfejsu w bibliotece klienta Python. Gdy te dane będą dostępne w Google Cloud, możesz na ich podstawie tworzyć wskaźniki, aby zyskać wgląd w aplikację za pomocą Google Cloud Monitoring. Postępuj zgodnie z przewodnikiem dotyczącym zdefiniowanych przez użytkownika wskaźników opartych na logach, aby tworzyć wskaźniki na podstawie logów wysyłanych do Google Cloud Logging.
Możesz też użyć bibliotek klienta usługi Monitoring, aby zdefiniować wskaźniki w kodzie i wysyłać je bezpośrednio do usługi Monitoring, niezależnie od dzienników.
Przykład wskaźników opartych na logach
Załóżmy, że chcesz monitorować is_fault
wartość, aby lepiej zrozumieć wskaźniki błędów w aplikacji. Możesz wyodrębnić wartość is_fault
z logów i utworzyć na jej podstawie nowy wskaźnik licznika ErrorCount
.
W Cloud Logging etykiety umożliwiają grupowanie danych w kategoriach na podstawie innych danych w logach. Możesz skonfigurować etykietę dla method
pola wysyłanego do Cloud Logging, aby sprawdzić, jak liczba błędów jest dzielona według metody interfejsu Google Ads API.
Po skonfigurowaniu wskaźnika ErrorCount
i etykiety Method
możesz utworzyć nowy wykres w panelu Monitorowania, aby monitorować wartość ErrorCount
pogrupowaną według etykiety Method
.
Alerty
W Cloud Monitoring i innych narzędziach możesz skonfigurować zasady alertów, które określają, kiedy i jak alerty powinny być wywoływane przez Twoje dane. Instrukcje konfigurowania alertów Cloud Monitoring znajdziesz w przewodniku po alertach.