Proste narzędzie Linux do mierzenia czasu żądania HTTP w milisekundach

12

Szukam prostego narzędzia lub wbudowanego polecenia, które pozwoli mi zmierzyć z milisekundową dokładnością czas potrzebny na pobranie zdalnej strony internetowej z danego adresu URL.

GJ
źródło

Odpowiedzi:

12

Czy to robi to, czego szukasz?

time wget http://example.com
Wstrzymano do odwołania.
źródło
Obejmuje to czas potrzebny do uruchomienia i uruchomienia wget, który może być znacznie dłuższy niż czas odpowiedzi serwera.
Paul Lynch
@PaulLynch: Zrobiłem prosty test. Uruchomiłem to w jednym terminalu: rm foo; touch foo; python -m SimpleHTTPServerw drugim: time wget --quiet --output-document=/dev/null localhost:8000/fooa wynik wynosił 2 milisekundy. Uruchomiłem to samo wgetz google.com (który pobiera około 10 000 znaków) i dostałem około ćwierć sekundy. W takim przypadku nazwijmy czas rozpoczęcia / działania około 1%. Potem, dla porównania, zrobiłem to time curl file://fooi otrzymałem około 4 milisekund.
Wstrzymano do odwołania.
Wygląda na to, że masz rację, jeśli chodzi o żądania HTTP - dla których dostaję tylko około 2 ms spowolnienia. Próbowałem uzyskać adres URL https. W tym celu wget jest wolniejszy o około 25 ms dla żądania, które Chrome zwraca w ciągu około 10 ms (a nie „z pamięci podręcznej”). Zarówno wget, jak i Chrome działają na tym samym komputerze co serwer sieciowy i nazywają go „localhost”, więc winię wget za różnicę czasu.
Paul Lynch
7

Httping to zrobi.

Httping jest jak „ping”, ale dla żądań HTTP. Podaj adres URL, a pokaże Ci, ile czasu zajmuje połączenie, wyślij żądanie i odbierz odpowiedź (tylko nagłówki). Pamiętaj, że transmisja w sieci również wymaga czasu! Mierzy więc opóźnienie sieci + serwera.

garyjohn
źródło
3

Wireshark pozwoli ci szczegółowo zbadać transfer. Możesz zobaczyć, jak długo trwa pobieranie pojedynczego pliku, jak sugerował Dennis, lub jeśli otworzysz adres URL w przeglądarce internetowej, możesz zobaczyć, ile czasu zajmuje załadowanie wszystkich powiązanych plików (obrazów, skryptów itp.).

Neil
źródło
2

Możesz to zrobić za pomocą zawijania zgodnie z tą odpowiedzią

Utwórz nowy plik curl-format.txti wklej:

    time_namelookup:  %{time_namelookup}\n
       time_connect:  %{time_connect}\n
    time_appconnect:  %{time_appconnect}\n
   time_pretransfer:  %{time_pretransfer}\n
      time_redirect:  %{time_redirect}\n
 time_starttransfer:  %{time_starttransfer}\n
                    ----------\n
         time_total:  %{time_total}\n

Następnie uruchom curl w następujący sposób:

curl -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"

Harry Wood
źródło