Разложить время HTTP-запроса по стадиям

Куда на самом деле ушли секунды: DNS, TCP, TLS, ожидание первого байта — одним curl без профилировщиков

curl -s -o /dev/null -w '\
dns:      %{time_namelookup}\n\
connect:  %{time_connect}\n\
tls:      %{time_appconnect}\n\
ttfb:     %{time_starttransfer}\n\
total:    %{time_total}\n' https://khorost.tech/

Значения кумулятивные, а не длительности стадий: time_connect включает time_namelookup. Чтобы получить длительность стадии, вычитайте предыдущую — собственно TLS-handshake это time_appconnect - time_connect.

Что обычно ищут: большой dns — проблема резолвера, а не сервера; разрыв между time_appconnect и time_starttransfer — сервер думал; большой total при маленьком ttfb — тело ответа велико или канал узкий.