snippets · bash
Eine URL ist langsam – DNS, Verbindung, TLS, Redirect oder Server?
„Die Seite ist langsam“ ist noch keine Diagnose. Zwischen Eingabe der URL und dem ersten Byte liegen mehrere Phasen.
Messen statt raten
curl -L -sS -o /dev/null \
-w 'dns=%{time_namelookup}s\nconnect=%{time_connect}s\ntls=%{time_appconnect}s\nfirst_byte=%{time_starttransfer}s\ntotal=%{time_total}s\nredirects=%{num_redirects}\nfinal=%{url_effective}\nstatus=%{http_code}\n' \
'<URL>'
Ergebnis lesen
time_namelookuphoch: DNS-Auflösung untersuchen.time_connecthoch: Netzwerkweg oder Erreichbarkeit.- großer Sprung bis
time_appconnect: TLS-Handshake auffällig. - großer Sprung bis
time_starttransfer: Server/Application braucht Zeit bis zum ersten Byte. - viele Redirects: Weiterleitungskette prüfen.
totaldeutlich größer als first byte: Antwortübertragung selbst dauert.
Die Werte sind kumulativ. Deshalb interessiert vor allem, wo der nächste große Sprung entsteht.
Warum das besser ist als time curl ...
Eine Gesamtdauer sagt nur, dass etwas langsam war. --write-out zerlegt denselben Request in messbare Phasen und macht aus einem Gefühl eine konkrete nächste Frage.
Quelle: https://curl.se/docs/manpage.html