내가 구성한 백엔드 서버는 1초당 몇 개의 요청을 견뎌낼 수 있을까?

황상익·2024년 10월 16일
0

Redis

목록 보기
11/12

부하 test

서버를 구현하고 배포, 실제 서비스에 배포를 하기전 서버가 어느정도의 요청을 견딜 수 있는 지 부하 test

부하 test -> 서버가 1초당 처리할 수 있는 작업량 = Throughput

단위는 TPS(Transaction per Second, 1초당 처리한 트랜잭션의 수)
ex) 1초에 최대 100개 API 요청을 처리할 수 있다면, Throughput은 100TPS

//내가 구축한 infra

  • EC2 - t3a.small
    • Spring Boot
    • Redis
  • RDS - t3.micro

부하 테스트 위한 환경 Setting

K6


성능 비교를 위해 K6 부하테스트 툴을 사용할 예정
K6외에 ngrinder, jmeter, ab, locust등 다양한 툴이 있다.


K6는 사용자인 척 하고 보내는 툴
원래라면 서비스에 요청을 보내야 하는데 K6는 여러명 사용자를 대신해서 요청하는 툴

import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  http.get('http://{EC2 IP 주소}:8080/boards');
}

부하 테스트

1. cachable 적용 X

사전에 100만개 data를 넣어서 비효율 적으로 만들어 놓음

  • ThroughtPut

    1초에 3.3433개를 처리 했다는 의미
    3.3 TPS라고 할 있다.

2. Cachable 적용 O


1232 TPS

+) 알게된 내용

nohup java -jar -Dspring.profiles.active=prod {빌드된 jar 파일명} &

nohup을 사용하면 springboot가 로딩 되는 부분을 안보여 줄 수 있다.
성능 비교를 좀더 확실히 하기 위해 설정

# K6의 스크립트 파일이 위치한 경로에서 아래 명령어 실행시키기
$ k6 run --vus 30 --duration 10s script.js

--vus 30

  • 가상유지를 30명으로 setting

--duration 10s

  • 30초 동안 test를 유지
profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글