ZZALU 부하 테스트

강혜성·2023년 2월 17일
0

ZZALU 프로젝트

목록 보기
9/11

Redis JPA 속도 비교

1. 입력이 없을 때 속도 비교

2. 지속적인 입력이 주어질 때 속도 비교

  • 속도비교는 Java 단에서 호출 직전과 호출 이후의 시간을 비교하여 측정했다.

Locust 부하 테스트

 각 결과는 최대 구간만 작성
 작성한 locustfile.py
from locust import HttpUser, task, between, TaskSet

class QuickstartUser(HttpUser):
wait_time = between(1, 5)

# 채팅방 접속 Task
@task
def chat_room(self):
    self.client.get("/")
    self.client.post("/members/login", json={"username":"gio", "password":"qqq111!!!"})
    self.client.get("/chat/rooms")
    self.client.get(url="/chat/messages?roomId=9e539b8c-ae10-4a54-8dae-6b5813d3a13d",
                    headers={"authorization": "Bearer " + "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJnaW8iLCJhdXRoIjoiUk9MRV9VU0VSIiwidXNlcm5hbWUiOiJnaW8iLCJleHAiOjE2NzY1NjU5MTh9.V5KyJ_PebhVyPGlsrpiRT6Zy2vJzJGqAQbzUAm8Yx30"})
#     self.client.get("/main")
#     self.client.get("/chat-list")
#     self.client.get("/chat/9e539b8c-ae10-4a54-8dae-6b5813d3a13d?room_name=웅이&room_id=9e539b8c-ae10-4a54-8dae-6b5813d3a13d&member_Id=5&like=true")

# 짤 디테일 검색 Task
@task
def gif_detail(self):
    self.client.get("/")
    self.client.post("/members/login", json={"username":"gio", "password":"qqq111!!!"})
    self.client.get("/gif/gif?gifId=7618")
    

# 프로필 확인 Task
@task
def gif_detail(self):
    self.client.get("/")
    self.client.post("/members/login", json={"username":"gio", "password":"qqq111!!!"})
    self.client.get("/members?username=gio")

Test 1
Number of Users : 100
spawn rate : 1

유저 수 최대일 때, RPS : 60~65 95Percent line : 1500 ~ 1800 ms median line : 650 ~ 1000 ms

Test 2
Number of Users : 200
spawn rate : 5

유저 수 최대일 때, RPS : 60 ~ 65 95Percent line : 3600 ~ 4500 ms median line : 2800 ~ 3400 ms

Test 3
Number of Users : 300
spawn rate : 5

유저 수 최대일 때, RPS : 60 ~ 65 95Percent line : 8500 ~ 9500 ms median line : 4500 ~ 5100 ms

위 세번의 실험으로
현 서버는 작성된 Task를 기준으로 RPS는 최대 65이며,
사용자가 많아져도 RPS는 최대치이므로 Response Time이 늘어나는 것을 알 수 있다.

아래는 Test3에서 수행된 Tasks들

현재까지의 Task의 특이사항으로는 Failure가 없다.

안정적인 서비스 제공을 위한 Response Time을 95 Percent line : 1000ms 이내라고 할 경우, 이를 만족시키는 최대 유저 수를 구하기 위한 테스트를 진행한다.

Test 4
Number of Users : 60
spawn rate : 1

유저 수 최대일 때, RPS : 57 ~ 60 95Percent line : 520 ~ 820 ms median line : 45 ~ 85 ms

Test 5
Number of Users : 70
spawn rate : 1

유저 수 최대일 때, RPS : 60 ~ 64 95Percent line : 740 ~ 990 ms median line : 90 ~ 250 ms

Test 6
Number of Users : 75
spawn rate : 1

유저 수 최대일 때, RPS : 60 ~ 63 95Percent line : 900 ~ 1200 ms median line : 200 ~ 330 ms

총 6번의 실험으로 다음과 같은 결과를 얻을 수 있었다.

  1. 현 서버의 최대 RPS는 65이다.
  2. 요청이 늘어나 최대 RPS보다 많아지는 경우 Response Time이 늘어난다.
  3. 안정적인 서비스를 제공하기 위해서는 최대 동시 접속 유저 수는 70 ~ 75명 이내여야한다.
  4. 최대 300명이 지정된 Task를 수행할 때도 Response Time만 큰 폭으로 늘고 Failure는 발생하지 않았다.

0개의 댓글