r잡초처럼
바른 프로그래밍
r잡초처럼
전체 방문자
오늘
어제
  • 분류 전체보기 (124)
    • FastAPI (7)
    • 끄적끄적 (2)
    • Python (17)
    • Django (31)
    • Database (2)
    • Docker (7)
    • 디자인패턴 (2)
    • CS 공부 (12)
      • 알고리즘 (2)
      • 자료 구조 (1)
      • 네트워크 (7)
      • IT 지식 (1)
      • 운영체제 (1)
    • 기타 팁들 (10)
    • Aws (2)
    • 독서 (1)
    • 코딩테스트 공부 (1)
      • 백준 (0)
      • 프로그래머스 (1)
    • DevOps (13)
    • TIL (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬 클린 코드
  • query param
  • 랜 카드
  • docker
  • encoding
  • depends
  • fastapi
  • 7장
  • pycharm
  • cp949
  • 네트워크
  • 모두의 네트워크
  • CS 지식
  • validate
  • 상속과 컴포지션
  • 랜과 왠
  • 케이블의 종류
  • dotenv
  • 완벽한 IT 인프라 구축을 위한 Docker
  • pytest
  • 전기 신호
  • 책 리뷰
  • poetry
  • 물리 계층
  • 5장 회사에서 하는 랜 구성
  • 6장
  • Batch
  • 컴퓨터 기본 지식
  • preonboarding
  • 상속 안티 패턴

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
r잡초처럼

바른 프로그래밍

서버 성능 측정해보기
기타 팁들

서버 성능 측정해보기

2023. 6. 26. 22:45

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 10 -d 30 -R 10 --latency http://localhost:8000/api/ 결과

wrk -c 100 -d 10 -R 100 --latency

용기를 내서 100명이 10초동안 초당 100번의 request 를 날렸을 때를 측정해봤다 결과는 아래와 같다.

wrk -c 100 -d 10 -R 100 --latency 결과

아직 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
    '기타 팁들' 카테고리의 다른 글
    • [ERROR] Pycharm Interpreter package install 시 'cp949' Encode error
    • Slack reminder 조회 및 삭제
    • Git branch 삭제하기
    • Websocket
    r잡초처럼
    r잡초처럼
    오늘보다 내일 더 나은 개발자가 되기 위한 노력을 기록하는 블로그 입니다.

    티스토리툴바