https://www.youtube.com/watch?v=HSNyJnobBws
- 서버 성능에 대해 막연하게 대답하지 않고 정량적으로 답할 수 있도록 해줬다.
- 해당 내용을 보고 현재 개발 중인 API 서버를 테스트 해봤다
- 벤치마크 툴은 여기서 소개한 wrk2 로 해봤다.
Wrk2 를 이용한 API 테스트 해보기
설치하기
- 일단 wrk2 를 설치해보자
sudo apt-get update
sudo apt-get install build-essential libssl-dev git
git clone https://github.com/giltene/wrk2.git
cd wrk2
make
sudo cp wrk /usr/local/bin
- 나는 windows 11을 사용하고 있기 때문에 wsl2 에서 ubuntu 22.04 버전으로 설치를 했다.
- API 테스트 성능을 해본 결과 충격적인 결과를 얻었다...
wrk -c 10 -d 30 -R 10 --latency http://localhost:8000/api/
- 해당 명령은 10명의 사용자가 30초동안 초당 10번의 request 를 날렸다는 뜻이다. 결과는 다음과 같았다.
느낀 점
해당 결과는 너무 충격적이였다... 아니 10명 사용자 초당 10번 request 를 날리는데 평균적으로 3.6초 걸린다는게... 말이되나? 해당 API 가 많은 attribute 를 보여주기는 하지만, 그래도... 너무 처참하다. 물론 여러가지 이유가 있을 수 있다 서버 스펙이 낮아서 일수도 있겠지... 여튼 이런 결과를 보고 느낀 점은 첫째 쿼리 최적화를 해야겠다는 생각이 들었다 현재 debug toolbar 를 이용해 쿼리 등을 프로파일링 하고 있지만 좀 더 면밀히 살펴봐야겠다는 생각이 들었다. 두 번째는 cache 를 도입해야겠다였다. 여튼 내일 회사에 가서 좀 더 세밀히 살펴봐야겠다.
후기
다음날 회사에 와서 로컬 환경으로 테스트를 해본 결과 어제는 서버 스펙의 문제가 맞았던 거 같다 같은 조건하에서 약 0.6초 정도 걸렸다(이것도 물론 많이 걸리는 거긴 하다만...)
wrk -c 100 -d 10 -R 100 --latency
용기를 내서 100명이 10초동안 초당 100번의 request 를 날렸을 때를 측정해봤다 결과는 아래와 같다.
아직 release 를 하지 않은 product 라서 이 정도만 되도 될 거 같긴한데 추후 서비스가 커진다면 리팩토링을 진행해야겠다.
'기타 팁들' 카테고리의 다른 글
[ERROR] Pycharm Interpreter package install 시 'cp949' Encode error (0) | 2023.08.14 |
---|---|
Slack reminder 조회 및 삭제 (0) | 2023.08.03 |
Git branch 삭제하기 (0) | 2023.06.01 |
Websocket (0) | 2023.05.05 |
Celery shared_task (0) | 2023.05.03 |