Pobieranie jest szybkie, więc dlaczego każde kliknięcie wydaje się wolne?
Duży transfer może iść z pełną prędkością, gdy połączenia i kliknięcia pozostają w tyle. Zmierz czas podróży w obie strony, stałą prędkość i opóźnienie pod obciążeniem jako trzy osobne pytania.
Szybkie pobranie dużego pliku i poczucie, że każde kliknięcie jest wolne, nie jest sprzecznością. Przepustowość mówi, ile może się przemieścić w sekundę; czas podróży w obie strony mówi, jak długo trwa wymiana, zanim stanie się coś użytecznego. Poprawa pierwszego nic nie daje drugiemu, a drugie jest tym, co człowiek zauważa podczas pisania, klikania lub rozmowy. Mierz skargę, nie połączenie.
Szybki plik, wolne kliknięcie: dwie różne liczby
Transfer masowy utrzymuje dane w ciągłym ruchu, więc może raportować zdrową prędkość nawet wtedy, gdy każde pojedyncze żądanie czeka. Wiele testów otwiera też kilka połączeń naraz, co podnosi łączną liczbę, podczas gdy jedno żądanie pozostaje wolne. Oba wyniki są spójne, a cytowanie wyższej liczby użytkownikowi, który skarży się na opóźnienie, to sposób na utratę zaufania.
Ładowanie strony to łańcuch małych wymian: rozwiązywanie nazw, nawiązanie połączenia, żądanie, odpowiedź, a potem żądania zależne. Każdy krok płaci ponownie czas podróży, więc ścieżka z dużym opóźnieniem wydaje się wolna, nawet gdy ma dużo przepustowości.
Tunel dodaje własną podróż i przetwarzanie, a trasa liczy się bardziej niż etykieta na mapie. Dwa wyjścia w tym samym kraju mogą mieć bardzo różne drogi do jednego celu. Różnica dwudziestu milisekund wystarcza, by zmienić odczucie strony, choć ledwie rusza liczbę przepustowości. Dlatego wybór wyjścia powinien podążać za próbką opóźnienia, a nie za ikoną flagi.
Mierz skargę, nie połączenie
Wybierz pomiar pasujący do zdania, które wypowiedział użytkownik. Wolne pobieranie potrzebuje stałej prędkości we właściwym kierunku; zacięte połączenie potrzebuje statystyk tej aplikacji; strona, która startuje wolno, potrzebuje czasów rozwiązywania nazw i nawiązania.
ping -c 20 10.60.0.5
curl -sS -o /dev/null -w 'ttfb=%{time_starttransfer} rate=%{speed_download}\n' https://files.plant.example/1gb.bin
iperf3 -c 10.60.0.5 -t 10 -P 4Pierwsze polecenie daje próbkę podróży w obie strony do hosta, który odpowiada przewidywalnie, drugie raportuje czas do pierwszego bajtu i stałą prędkość jednego połączenia, a trzecie mierzy łączną przepustowość czterema równoległymi strumieniami. Uruchom je wobec tego samego celu o tej samej porze dnia, bo porównanie próbki porannej z wieczorną daje historię, a nie pomiar.
Trzymaj cel nieruchomo, gdy porównujesz wyjścia. Zmiana zarówno serwera, jak i tunelu zamienia jedną zmienną w dwie, a wynik nie może powiedzieć, która miała znaczenie. Uruchom każde wyjście co najmniej trzy razy, bo pojedyncza próbka często wypada podczas zmiany trasowania lub głośnej minuty. Mediana jest użyteczniejsza niż najlepszy przypadek.
Traktuj ICMP jako wskazówkę, a nie odpowiedź. Odpowiadający host może obsługiwać żądania echa inną ścieżką niż ta, której używa twoja aplikacja, a jedna utracona odpowiedź nie jest dowodem, że każda aplikacja traci pakiety.
Opóźnienie pod obciążeniem to problem kolejki
Wzorzec, który najbardziej myli ludzi, to połączenie sprawne na luzie i bezużyteczne podczas kopii zapasowej. To kolejka, a nie przepustowość. Zatkane łącze wysyłające buduje bufor przed każdym innym pakietem, więc naciśnięcie klawisza czeka za kawałkiem wysyłania.
ping -c 20 10.60.0.5 & iperf3 -c 10.60.0.5 -t 20 -R -b 20M
Pierwsze polecenie próbkuje opóźnienie w tle, a drugie zatka przeciwny kierunek. Jeśli czasy ping skaczą podczas transferu i potem się poprawiają, odtworzyłeś bufferbloat, a nie odkryłeś usterki trasowania. Poprawką jest zwykle ustawienie zarządzania kolejką, niższa prędkość w tle albo przeniesienie masowego transferu poza ścieżkę interaktywną.
Ograniczenie opcjonalnego ruchu w tle często pomaga bardziej niż zmiana kraju wyjścia. Jest też tańsze, odwracalne i sprawdzalne w minutę. Zaplanuj duże wysyłania poza godzinami pracy, jeśli kolejki nie da się zarządzać, a jeśli muszą działać w dzień, ogranicz ich prędkość. Ustawienie zarządzania kolejką jest lepszą poprawką, gdy router je obsługuje.
Zmień jedną rzecz i porównuj podobne z podobnym
Przy dużym opóźnieniu na luzie porównuj wyjścia, trzymając cel nieruchomo, a potem porównaj trasy dla najlepszego kandydata. Przy niskiej stałej przepustowości patrz raczej na przepustowość, obciążenie serwera i przetwarzanie klienta, bo to inne ograniczenia.
Zapisz, co zmierzyłeś, wobec jakiego celu, o której godzinie i z jakimi ustawieniami. Porównania bez tych czterech faktów nie da się powtórzyć, a następna osoba zacznie od zera.
Następnie dopasuj narzędzie do twierdzenia w zgłoszeniu. "Wolny internet" nie jest pomiarem; "pierwszy bajt zajął 900 ms do tego hosta, a przepustowość była dobra" jest, i wskazuje bezpośrednio na opóźnienie, a nie na przepustowość.