hey, 사용이 간단한 웹서버 부하테스트 커맨드라인 프로그램

iKay 2023. 8. 1. 01:14
반응형

웹서버 부하테스트 툴은 많습니다. 오늘은 여러 툴 중 하나인 커맨드라인으로 간단히 테스트를 쉽게할 수 있는 오픈소스인 hey를 소개합니다. 

 

소스코드는 https://github.com/rakyll/hey에서 보실 수 있습니다. 

 

GitHub - rakyll/hey: HTTP load generator, ApacheBench (ab) replacement

HTTP load generator, ApacheBench (ab) replacement. Contribute to rakyll/hey development by creating an account on GitHub.

github.com

소개

hey는 웹 애플리케이션을 부하테스트 하는 경량화된 프로그램으로 Go 언어로 작성되었고 https://github.com/tarekziade/boom에서 영향을 받아서 만들어 졌다고 합니다. 

설치하기

사용하는 OS에 따라 설치파일이 다릅니다. 

Mac 사용자라라면 homebrew로도 설치 가능합니다.

brew install hey

 

반응형

 

장점

부하테스트를 하기 위한 프로그램은 많은데요. 이 프로그램을 사용하는 이유는 다음과 같은 장점이 있기 때문입니다.

  • 무료입니다. 생각보다 쓸만한 무료 부하테스트 툴이 별로 없는 듯 합니다.
  • 용량이 작고 사용이 쉽고 가볍습니다.
  • 요청 클라이언트 query per second(QPS) 옵션이 있습니다. 생각보다 이 기능이 다른 툴에 없습니다.
  • http2 요청도 가능합니다.

 

사용 예

# 예 1
hey -c 5 -z 60s -H "Content-Type: application/json" -m POST -d '{"key1":"val1"}' 'https://www.google.com'

# 옵션 설명
-c 5: 테스트 수행 클라이언트 5개
-z 60s: 60초 동안 테스트 수행 
-H "Content-Type: application/json": header에 "Content-Type: application/json" 내용 넣어서 요청
-m POST: 요청 메소드 POST
-d '{"key1":"val1"}': POST body에 요청할 payload


# 예 2
hey -c 3 -z 60s -q 10 'https://www.google.com'

# 옵션 설명
-c 3: 테스트 수행 클라이언트 5개
-z 60s: 60초 동안 테스트 수행
-q 10: 1초당 10개의 요청으로 제한함

 

응답 예

https://www.google.com에 60초 동안 10 QPS, 5개의 클라이언트로 제한하여 부하테스트를 한 결과 예시 입니다. 

hey -c 5 -z 60s -q 10 'https://www.google.com'

Summary:
  Total:        60.1204 secs
  Slowest:      1.0855 secs
  Fastest:      0.1090 secs
  Average:      0.1331 secs
  Requests/sec: 37.4748
  

Response time histogram:
  0.109 [1]     |
  0.207 [2226]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.304 [12]    |
  0.402 [3]     |
  0.500 [5]     |
  0.597 [1]     |
  0.695 [0]     |
  0.793 [0]     |
  0.890 [0]     |
  0.988 [1]     |
  1.086 [4]     |


Latency distribution:
  10% in 0.1196 secs
  25% in 0.1227 secs
  50% in 0.1265 secs
  75% in 0.1323 secs
  90% in 0.1417 secs
  95% in 0.1567 secs
  99% in 0.2127 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0006 secs, 0.1090 secs, 1.0855 secs
  DNS-lookup:   0.0001 secs, 0.0000 secs, 0.0388 secs
  req write:    0.0001 secs, 0.0000 secs, 0.0035 secs
  resp wait:    0.1243 secs, 0.1017 secs, 1.0834 secs
  resp read:    0.0080 secs, 0.0003 secs, 0.2225 secs

Status code distribution:
  [200] 2253 responses

 

단점

하지만 커맨드라인에서 실행시켜야 하기 때문에 dynamic 하게 쿼리스트링, path param 을 변경하는 것은 어렵습니다. 

 

또한 많이 사용되고 star도 많이 받은 오픈소스이지만 관리는 잘 되지 않고 있는 느낌입니다. 마지막 v0.1.4가 2020년 8월 이후로 업데이트가 없는 듯 하구요.

 

결론

간단히 커맨드라인 툴로써 부하테스트를 할 수 있는 프로그램을 찾는다면 hey를 사용하는 것은 괜찮은 것 같습니다.  한 번 사용해보시는 것을 추천 드립니다.

 

반응형