본문 바로가기

리눅스

curl 명령어로 웹사이트 로딩 속도를 테스트하는 방법

728x90

curl 명령어로 웹사이트 로딩 속도를 테스트하는 방법

curl 버전 정보

$ curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.53.1 zlib/1.2.7 libidn/1.28 libssh2/1.8.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets

http code 출력

curl -s -o /dev/null -w '%{http_code}\n' https://scbyun.com
$ curl -s -o /dev/null -w '%{http_code}\n' https://scbyun.com
200

웹사이트 로딩 속도 테스트 #1

curl -s -w '\nTesting Website Response Time for: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://scbyun.com
$ curl -s -w '\nTesting Website Response Time for: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://scbyun.com

Testing Website Response Time for: https://scbyun.com/

Lookup Time:		0.004
Connect Time:		0.007
Pre-transfer Time:	0.208
Start-transfer Time:	0.526

Total Time:		0.529

웹사이트 로딩 속도 테스트 #2

curl-format.txt 파일 생성

vim curl-format.txt
    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
curl -w "@curl-format.txt" -o /dev/null -s https://scbyun.com
$ curl -w "@curl-format.txt" -o /dev/null -s https://scbyun.com
    time_namelookup:  0.004
       time_connect:  0.007
    time_appconnect:  0.210
   time_pretransfer:  0.210
      time_redirect:  0.000
 time_starttransfer:  0.488
                    ----------
         time_total:  0.488
728x90

 

부록 #1

$ for i in {1..3}; do curl -s -w "%{time_total}\n" -o /dev/null https://scbyun.com; done
0.689
0.566
0.737

사용 가능한 변수

  • content_type: 요청된 문서의 Content-Type. 존재하는 경우 해당 값이 표시됩니다.
  • filename_effective: curl이 --remote-name 또는 --output 옵션과 함께 파일에 기록할 때 최종 파일 이름입니다. --remote-header-name 옵션과 함께 사용할 때 가장 유용합니다. (7.25.1 버전에서 추가됨)
  • ftp_entry_path: 원격 FTP 서버에 로그인할 때 curl이 최종으로 도달한 경로입니다. (7.15.4 버전에서 추가됨)
  • http_code: 마지막으로 수신한 HTTP(S) 또는 FTP(s) 전송에서 찾은 숫자 응답 코드입니다. 7.18.2 버전부터
  • response_code 별칭을 사용하여 동일한 정보를 표시합니다.
  • http_connect: 마지막 CONNECT 요청에 대한 응답(프록시로부터)에서 발견된 숫자 코드입니다. (7.12.4 버전에서 추가됨)
  • local_ip: 가장 최근에 수행한 연결의 로컬 엔드의 IP 주소입니다. IPv4 또는 IPv6일 수 있습니다. (7.29.0 버전에서 추가됨)
  • local_port: 가장 최근에 수행한 연결의 로컬 포트 번호입니다. (7.29.0 버전에서 추가됨)
  • num_connects: 최근 전송에서 수행된 새로운 연결 수입니다. (7.12.3 버전에서 추가됨)
  • num_redirects: 요청에서 따라간 리디렉션 수입니다. (7.12.3 버전에서 추가됨)
  • redirect_url: -L 옵션 없이 HTTP 요청을 보낼 때, 이 변수는 리디렉션이 이동할 실제 URL을 보여줍니다. (7.18.2 버전에서 추가됨)
  • remote_ip: 가장 최근에 수행한 연결의 원격 IP 주소입니다. IPv4 또는 IPv6일 수 있습니다. (7.29.0 버전에서 추가됨)
  • remote_port: 가장 최근에 수행한 연결의 원격 포트 번호입니다. (7.29.0 버전에서 추가됨)
  • size_download: 다운로드된 총 바이트 수입니다.
  • size_header: 다운로드된 헤더의 총 바이트 수입니다.
  • size_request: HTTP 요청에 전송된 총 바이트 수입니다.
  • size_upload: 업로드된 총 바이트 수입니다.
  • speed_download: curl이 전체 다운로드에 대해 측정한 평균 다운로드 속도입니다. 초당 바이트 수입니다.
  • speed_upload: curl이 전체 업로드에 대해 측정한 평균 업로드 속도입니다. 초당 바이트 수입니다.
  • ssl_verify_result: 요청한 SSL 피어 인증서 확인 결과입니다. 0은 확인이 성공했음을 나타냅니다. (7.19.0 버전에서 추가됨)
  • time_appconnect: SSL/SSH 등 연결/핸드셰이크가 원격 호스트에 완료된 시간(초)입니다. (7.19.0 버전에서 추가됨)
  • time_connect: 로컬 호스트(또는 프록시)에 대한 TCP 연결이 시작된 시간부터 완료된 시간(초)입니다.
  • time_namelookup: 이름 해결이 완료된 시간(초)입니다.
  • time_pretransfer: 파일 전송이 시작되기 직전까지의 시간(초)입니다. 특정 프로토콜에 대한 모든 전송 전 사전 처리 명령 및 협상이 포함됩니다.
  • time_redirect: 이름 조회, 연결, 사전 전송 및 최종 트랜잭션 시작 전의 전환 단계의 시간(초)입니다. time_redirect는 다중 리디렉션에 대한 완전한 실행 시간을 표시합니다. (7.12.3 버전에서 추가됨)
  • time_starttransfer: 첫 번째 바이트가 전송되기 직전까지의 시간(초)입니다. time_pretransfer와 서버가 결과를 계산하는 데 소요된 시간을 포함합니다.
  • time_total: 작업이 지속된 총 시간(초)입니다. 시간은 밀리초 해상도로 표시됩니다.
  • url_effective: 마지막으로 가져온 URL입니다. 특히 curl에게 location: 헤더를 따라가도록 지시한 경우 의미가 가장 큽니다.

 

참고URL

curl.1 the man page : https://curl.se/docs/manpage.html

github manifestinteractive(sniff.txt) : https://gist.github.com/manifestinteractive

curl 명령어 : https://sangchul.kr/2

 

728x90