카테고리 없음

서버 응답시간 측정 방법: curl 명령어 하나로 웹사이트 속도 확인하는 법

14722 2026. 9. 19. 11:50

웹사이트를 운영하거나 블로그를 관리할 때 가장 신경 쓰이는 부분 중 하나가 바로 '페이지 로딩 속도'입니다. Google을 포함한 주요 검색엔진은 사용자 경험(UX)을 매우 중요하게 평가하기 때문에, 서버 응답 속도가 느린 웹사이트는 검색 결과 상단에 노출되기 어렵습니다. 또한 속도가 느리면 방문자가 글을 읽기도 전에 창을 닫아버려 이탈률이 급격히 증가

하게 됩니다.

일반적으로 웹사이트 속도를 측정할 때 Google PageSpeed Insights나 GTmetrix 같은 외부 웹 도구를 많이 활용합니다. 하지만 이러한 도구들은 캐시 상태, 브라우저 렌더링 시간, 외부 스크립트 로딩 등 다양한 변수가 개입하여 순수한 '서버 자체의 응답 속도'만을 정밀하게 측정하기는 어렵습니다.

이때 네트워크 명령줄 도구인 curl(Client URL)을 사용하면 외부 환경의 인터럽트 없이 서버가 클라이언트 요청에 반응하는 정확한 단계를 millisecond(밀리초) 단위로 분석할 수 있습니다. 이번 포스팅에서는 curl 명령어를 활용해 서버 응답시간을 단계별로 측정하고 성능 병목 구간을 찾이내는 방법을 상세히 알아보겠습니다.

서버 응답시간 측정에서 분석되는 주요 단계

웹 브라우저가 특정 URL에 접속할 때 내부적으로는 여러 네트워크 통신 단계를 거치게 됩니다. curl 명령어를 활용하면 아래와 같이 크게 6가지 단계의 소요 시간을 개별적으로 측정할 수 있습니다.

  • DNS Lookup (time_namelookup): 도메인 주소(예: example.com)를 실제 서버의 IP 주소로 변환하는 데 걸리는 시간입니다.
  • TCP Connect (time_connect): 클라이언트와 서버 간에 TCP 연결(3-Way Handshake)이 완료될 때까지의 시간입니다.
  • AppConnect / TLS Handshake (time_appconnect): HTTPS 보안 연결을 사용할 때 SSL/TLS 암호화 악수가 완료되는 시간입니다.
  • Pre-transfer (time_pretransfer): 파일 전송이 시작되기 바로 전까지, 즉 서버로 요청을 보낼 준비가 완료된 시점까지의 시간입니다.
  • Start-transfer / TTFB (time_starttransfer): 서버가 요청을 받고 첫 번째 바이트(First Byte)를 클라이언트로 전달할 때까지 걸린 시간입니다. 흔히 말하는 TTFB(Time To First Byte)가 바로 이 지점입니다.
  • Total Time (time_total): 전체 데이터 전송이 완료되고 요청이 끝날 때까지 걸린 총 소요 시간입니다.

curl 명령어 기본 사용 방법 및 설정

터미널(macOS/Linux) 또는 명령 프롬프트(Windows)에서 curl을 실행하여 각 단계별 시간을 한눈에 확인하려면, 먼저 출력 포맷을 지정하는 텍스트 파일을 만들어 두는 것이 편리합니다.

1. 포맷 파일 작성 (curl-format.txt)

작업 디렉토리에 curl-format.txt라는 이름의 파일을 생성하고 아래 내용을 그대로 입력한 후 저장합니다.

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

2. 터미널에서 측정 명령어 실행

생성한 포맷 파일을 지정하여 측정하고자 하는 웹사이트 주소로 요청을 보냅니다. 본문 응답 데이터는 화면에 출력할 필요가 없으므로 -o /dev/null 옵션을 사용하여 버립니다.

 
Bash
 
curl -w "@curl-format.txt" -o /dev/null -s https://example.com
  • -w "@curl-format.txt": 정의한 서식대로 측정 시간을 출력합니다.
  • -o /dev/null: 웹페이지의 HTML 응답 본문을 화면에 표시하지 않고 무시합니다. (Windows CMD 환경에서는 -o NUL 사용)
  • -s: 진행 상황 표시줄(progress bar)을 숨기는 호흡 정돈 옵션입니다.

응답시간 측정 결과 해석 및 문제 해결 가이드

명령어를 실행하면 터미널에 다음과 같은 형태의 수치가 초 단위로 출력됩니다.

측정 항목 출력 예시 값 주요 점검 포인트
time_namelookup 0.012345s 지연 시 DNS 호스팅 업체 변경 또는 네임서버 설정 점검 필요
time_connect 0.045678s 지연 시 서버와 클라이언트 간 지리적 거리 또는 네트워크 대역폭 확인
time_appconnect 0.089012s 지연 시 SSL/TLS 인증서 설정 최적화 및 HTTP/2, HTTP/3 적용 검토
time_starttransfer (TTFB) 0.234567s 핵심 지표. 지연 시 DB 쿼리 최적화, 백엔드 코드 개선, 서버 캐시 적용 필수
time_total 0.312345s 지연 시 전송 대상 파일 크기 축소(Gzip/Brotli 압축) 및 CDN 도입 검토

웹사이트 속도 개선의 핵심은 time_starttransfer (TTFB)를 줄이는 것에 있습니다. Google의 권장 기준에 따르면 TTFB는 200ms(0.2초) 이내로 유지되는 것이 가장 이상적입니다. 만약 이 구간의 수치가 높다면 서버 내부에서 데이터베이스를 조회하거나 동적 페이지를 생성하는 과정에 병목이 발생하고 있다는 명확한 신호입니다.

결론: 정기적인 서버 측정의 중요성

서버 응답시간 단축은 단순히 화면이 일찍 뜨는 것을 넘어, 검색엔진 크롤러가 사이트의 더 많은 페이지를 효율적으로 수집하도록 돕고 사용자 만족도를 높이는 가장 기본적인 바탕입니다.

웹사이트 개편이나 플러그인 추가, 서버 설정 변경 후에는 반드시 오늘 소개한 curl 명령어를 활용해 구간별 소요 시간을 정밀하게 확인해 보세요. 객관적인 수치를 바탕으로 병목 구간을 하나씩 개선해 나간다면 상위 노출과 사용자 유치에 훨씬 유리한 고지를 점할 수 있을 것입니다.