반응형
웹서버 부하테스트 툴은 많습니다. 오늘은 여러 툴 중 하나인 커맨드라인으로 간단히 테스트를 쉽게할 수 있는 오픈소스인 hey를 소개합니다.
소스코드는 https://github.com/rakyll/hey에서 보실 수 있습니다.
소개
hey는 웹 애플리케이션을 부하테스트 하는 경량화된 프로그램으로 Go 언어로 작성되었고 https://github.com/tarekziade/boom에서 영향을 받아서 만들어 졌다고 합니다.
설치하기
사용하는 OS에 따라 설치파일이 다릅니다.
- linux 64bit: https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
- Mac 64bit: https://hey-release.s3.us-east-2.amazonaws.com/hey_darwin_amd64
- Windows 64bit: https://hey-release.s3.us-east-2.amazonaws.com/hey_windows_amd64
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를 사용하는 것은 괜찮은 것 같습니다. 한 번 사용해보시는 것을 추천 드립니다.
반응형