Wydajność · 3 min czytania

Prędkość proxy: jak mierzymy opóźnienie i dlaczego ping kłamie

Prędkość proxy to nie jedna liczba. Opóźnienie, przepustowość i czas do pierwszego bajtu mierzą różne rzeczy, a surowy ping ICMP wprowadza w błąd we wszystkich tych kwestiach. Oto co naprawdę ma znaczenie i jak to zmierzyć.

Szybkość to trzy różne liczby

Opóźnienie, przepustowość i TTFB nie są wymienne.

Kiedy ktoś pyta "jak szybki jest ten proxy?" zazwyczaj ma na myśli jedną rzecz, ale potrzebuje trzech. Mieszanie ich jest powodem, dla którego proxy, które "szybko pinguje", w rzeczywistości wydaje się wolne w użyciu.

  • Opóźnienie to czas opóźnienia w obie strony dla małego żądania — jak długo zanim cokolwiek wróci. Dominuje w odczuciu interaktywnej pracy i wielu małych żądań, takich jak wywołania API lub nawigacja po stronach.
  • Przepustowość to ilość danych na sekundę, jaką proxy może przesłać, gdy transfer już się rozpoczął. Dominuje w dużych pobraniach i intensywnym skanowaniu, a proxy o niskim opóźnieniu może nadal mieć słabą przepustowość.
  • Czas do pierwszego bajtu (TTFB) to cały łańcuch: DNS, handshake połączenia, proxy przekazujące twoje żądanie, myślenie docelowe i przybycie pierwszego bajtu. To najbliższa pojedyncza liczba do "jak naprawdę czuło się to żądanie."

Dla większości prac z proxy najważniejszą liczbą jest opóźnienie i TTFB, ponieważ wykonujesz wiele żądań, a nie jedno ogromne pobranie. To jest kolumna, którą prezentujemy na liście darmowych proxy, i to jest to, co mierzą poniższe skrypty.

Metryki, które mają znaczenie

I które zadanie każdy z nich przewiduje.

Opóźnienie (czas przejazdu)

Opóźnienie przed rozpoczęciem odpowiedzi. Najlepszy wskaźnik dla wywołań API, nawigacji i wielu małych zapytań. Niskie opóźnienie sprawia, że proxy wydaje się responsywne, a nie ociężałe.

Przepustowość (pasmo)

Dane przesyłane na sekundę podczas transferu. Najlepszy wskaźnik dla dużych pobrań i masowego skanowania. Proxy może mieć niską latencję, ale ograniczoną przepustowość, więc zmierz to, na czym zależy Twoje zadanie.

Czas do pierwszego bajtu

Pełny łańcuch żądania, w tym handshake i czas myślenia serwera. Pojedyncza liczba najbliższa rzeczywistemu odczuciu, i to, co raportuje rozkład czasowy curl.

Spójność

Jedna szybka próbka niewiele znaczy. Proxy, które ma dobre średnie, ale ma złe szczyty, zatrzyma twoje zadania. Mierz kilka razy i zwróć uwagę na rozrzut, a nie tylko na najlepszy przypadek.

Dlaczego surowy ping kłamie

ICMP to nie to, co robią twoje zapytania.

Instynkt podpowiada, aby pingować proxy i ufać wartości milisekundowej. To wprowadza w błąd z kilku konkretnych powodów. Ping używa ICMP, innego protokołu niż TCP i TLS, które wykorzystuje twój rzeczywisty ruch — sieci rutynowo priorytetują, depriorytetują lub całkowicie blokują ICMP, więc liczba pingów tego nie odzwierciedla. Ping mierzy również skok do proxy, a nie pełną trasę przez nie do twojego rzeczywistego celu, co jest tym, co cię interesuje. I całkowicie ignoruje koszty, które dominują w rzeczywistych żądaniach: handshake TCP, negocjację TLS, rozwiązywanie DNS i czas, jaki zajmuje samemu celowi odpowiedź.

Uczciwy sposób pomiaru proxy to zmierzenie rzeczywistego żądania przez nie, mierząc etapy połączenia i pierwszego bajtu tak, jak raportuje to curl. To uchwyci handshake, relay i cel — wszystko, co ping odrzuca. Dokładnie w ten sposób powstają liczby opóźnienia na naszej liście, co jest celem publikacji przejrzystej metodologii, a nie liczby marketingowej.

Mierz rzeczywiste opóźnienie proxy

Zapisz jako proxy-latency.sh. curl raportuje czas połączenia i czas do pierwszego bajtu — to, co rzeczywiście odczuwa żądanie — a nie mylący ping ICMP. Użycie: bash proxy-latency.sh HOST:PORT

bash
#!/usr/bin/env bash
# proxy-latency.sh — measure REAL latency through a proxy, not ICMP ping.
# curl exposes connect + time-to-first-byte, which is what a request feels.
# Usage: bash proxy-latency.sh HOST:PORT [url] [runs]
PROXY="$1"
URL="${2:-https://api.ipify.org}"
N="${3:-5}"

fmt='connect=%{time_connect}s  ttfb=%{time_starttransfer}s  total=%{time_total}s\n'
echo "measuring $PROXY -> $URL ($N runs)"
for i in $(seq 1 "$N"); do
  curl -s -o /dev/null --max-time 10 \
       --socks5-hostname "$PROXY" \
       -w "$fmt" "$URL"
done

# Compare against no proxy to see the true added cost:
#   for i in $(seq 1 5); do curl -s -o /dev/null -w "$fmt" "$URL"; done

Sprawiedliwe mierzenie proxy

Krótka metodologia, którą możesz ponownie wykorzystać.

Aby uczciwie porównać proxy, trzymaj zmienne w stałej wartości. Testuj każde proxy w stosunku do tego samego celu i z tej samej sieci, uruchom każde z nich wielokrotnie i raportuj medianę zamiast najszczęśliwszej próbki, a zawsze zmierz podstawę bez proxy, aby móc przypisać dodatkowe opóźnienie do proxy, a nie do własnego połączenia lub celu. Odległość to fizyka: proxy geograficznie daleko od Ciebie lub od celu zawsze doda opóźnienie, którego żaden tunel nie może usunąć, więc uwzględnij lokalizację, zamiast obwiniać proxy.

To ta sama dyscyplina, która stoi za danymi s4m. Uwierzytelnione proxy z centrów danych są zaprojektowane do zapewnienia spójnej, niskiej latencji, a kolumna opóźnienia z listy darmowej jest generowana na podstawie rzeczywistych pomiarów czasowych, a nie ICMP. Chcesz, aby jedno proxy zostało sprawdzone natychmiast? Użyj sprawdzacza proxy; chcesz zweryfikować całą listę, w tym prędkość, zobacz jak sprawdzić ważność proxy.

FAQ

Pytania, odpowiedzi

Dlaczego ping mojego proxy jest niski, ale nadal wydaje się wolny?

Ponieważ ping mierzy ICMP do proxy, a nie twój rzeczywisty ruch przez nie. Twoje żądania płacą za handshake TCP, TLS, DNS i czas odpowiedzi docelowego — żaden z tych elementów nie jest uchwycony przez ping. Proxy z dobrym pingiem może nadal mieć wolny czas do pierwszego bajtu lub słabą przepustowość, co faktycznie odczuwasz.

Jaka jest różnica między opóźnieniem a przepustowością dla proxy?

Opóźnienie to czas oczekiwania przed rozpoczęciem odpowiedzi; przepustowość to ilość danych przesyłanych na sekundę, gdy już to nastąpi. Opóźnienie dominuje w wielu małych żądaniach, takich jak wywołania API i skanowanie stron po stronie; przepustowość dominuje w dużych pobraniach. Proxy może być silne w jednym, a słabe w drugim, więc zmierz to, czego potrzebuje twoje zadanie.

Jak powinienem prawidłowo benchmarkować proxy?

Zmierz rzeczywiste żądanie przez to, a nie ping. Zmierz czas połączenia i etapy pierwszego bajtu za pomocą curl, testuj przeciwko temu samemu celowi z tej samej sieci, uruchom kilka razy i weź medianę, a następnie porównaj z bazą bez proxy. Skrypt bash powyżej robi dokładnie to.

Czy odległość do proxy wpływa na prędkość?

Tak, nieuchronnie. Proxy daleko od ciebie lub od twojego celu dodaje czas okrążenia, którego żadne oprogramowanie nie może usunąć — to fizyka. Porównując proxy, weź pod uwagę lokalizację i preferuj wyjście, które jest geograficznie sensowne zarówno dla ciebie, jak i dla celu, do którego zmierzasz.

Mierz to, nie zgaduj

Benchmarkuj proxy w sposób, w jaki żądania rzeczywiście się zachowują za pomocą powyższego skryptu, lub zacznij od uwierzytelnionych proxy z centrum danych zaprojektowanych do stałej niskiej latencji. Najpierw przetestuj jedno za darmo w narzędziu do sprawdzania proxy.

Ludzie znaleźli tę stronę, szukając

Rzeczywiste frazy wyszukiwania, na które ta strona odpowiada — powiązane otwierają stronę, która je szczegółowo omawia.