본문 바로가기

curl -w로 HTTP 요청 구간별 소요 시간(DNS/TCP/TLS/TTFB) 측정하기

조회 1 · 댓글 0
포스트맨작성자2026년 8월 13일

API가 느린데 서버 처리가 느린 건지 연결(DNS/TCP/TLS)이 느린 건지 구분해야 할 때 씁니다. curl의 -w(--write-out) 옵션으로 전송이 끝난 뒤 구간별 시간을 뽑을 수 있습니다. 응답 본문은 -o /dev/null로 버리고 -s로 진행률 표시만 끕니다.

curl -s -o /dev/null -w "dns:      %{time_namelookup}\ntcp:      %{time_connect}\ntls:      %{time_appconnect}\nttfb:     %{time_starttransfer}\ntotal:    %{time_total}\ncode:     %{http_code}\n" https://api.example.com/health

%{변수} 자리에 값이 치환되고, 줄바꿈은 \n, 리터럴 퍼센트는 %%로 씁니다. 주의할 점은 이 시간값들이 각 구간이 아니라 요청 시작 시점부터의 누적 초라는 것입니다. 실제 TLS 핸드셰이크 시간은 time_appconnect - time_connect처럼 빼서 봐야 합니다. time_appconnect는 SSL/SSH 핸드셰이크 완료까지의 시간이라 평문 HTTP에서는 0으로 나옵니다. 포맷 문자열이 길면 파일에 넣고 -w @curl-format.txt로 불러오면 재사용하기 편합니다.

🔗 https://everything.curl.dev/usingcurl/verbose/writeout.html

🔗 https://curl.se/docs/manpage.html

로그인 후 답글을 남길 수 있습니다.