본문 바로가기
Log/Experiment

exp004_동일한 로직을 다른 시간대에 테스트하여 성능 차이 비교

by RIEM 2023. 2. 27.

Experiment Overview


실험 배경 : 부하 테스트 툴 nGrinder을 활용하여 경매 래플 어플리케이션 시스템의 서버 부하 테스트 진행중인 상황

실험명 : exp004_동일한 로직을 다른 시간대에 테스트하여 성능 차이 비교
실험 목표 : 이전 partial selection 코드를 적용한 코드를 다른 시간에 테스트한다면 과연 서버 또는 DB 성능차가 발생하는지 여부를 파악하기 위함

실험 코드 : test-pyramid-20230227-001 (테스트 시간 20230227 3:33AM)
관련 실험 코드 : test-pyramid-20230224-002(테스트 시간 20230226 22:09PM - 이전 테스트와 연계로 인한 테스트명과 테스트 시간에 오차 발생)

Summary

  • 같은 로직을 실험하더라도 다른 시간대(밤 10시, 새벽 3시)에 진행하느냐에 따라 서버와 DB 성능이 달라졌음을 확인. 단, 실험 횟수가 1회이고 다른 변수를 고려하지 못했다는 점에서 더 많은 데이터가 필요
  • 이전 실험에서는 DB CPU 사용률이 약 98%까지 상승한 뒤 실험 후반부에서 DB가 정지된 반면, 현재 실험에서는 DB 사용률이 약 89%에 불과했고 실험 기간 동안 안정적으로 모든 작업을 수행했다
  • 두 테스트 간 앱 서버의 CPU 사용률이 30% 이상 차이나는데, 이는 상식적으로 이해가 되지 않는 수치이기에 기록상 문제가 없는지 재확인할 필요가 있다고 판단됨

Idea

  • 만약 동일한 로직이여도 가동 시간대에 따라 성능이 바뀐다는 가설이 맞다면, 실제 비즈니스 환경에서 실시간으로 즉각 처리하지 않고 일괄적으로 처리해도 되는 로직들을 새벽 시간대에 처리한다면 코스트를 줄일 수 있을 것으로 예상됨

Experiment Plan

Screen Shot 2023-02-27 at 4 31 46 AM
실험 조건은 동일하다.

while Experiment

Screen Shot 2023-02-27 at 3 33 49 AM|1000
Slow query 로그 기준을 50ms으로 정해두었다. 50ms 이상 넘어가는 쿼리들이 얼마나 나오는지 직접 관찰하고 시었는데, 40% 이상은 슬로우 쿼리가 뜬거 같다.

Result

NGrinder Report

Screen Shot 2023-02-27 at 3 51 19 AM|1200

이번 테스트의 결과 수치는 아래와 같다.

  • TPS : 138.4
  • Peak TPS : 159
  • MTT : 287.37
  • 실행 Test 수 : 123746

이 그래프를 보고 바로 떠오른 느낌은 이전 테스트 비해 안정적이라는 점이다. 80에서 140대로 안정적으로 올라간 도입부 부분도 마음에 들고, 처음부터 끝까지 대체로 평균 120 - 150 TPS 사이를 유지한 점도 마음에 들었다.

Screen Shot 2023-02-27 at 3 51 32 AM|1200

Previous test vs. Current one

Screen Shot 2023-02-27 at 4 19 02 AM|1000

  • Related exp(Top) : test-pyramid-20230224-002
  • Exp code(Bottom) : test-pyramid-2023027-001

Application Server

Screen Shot 2023-02-27 at 3 53 26 AM|1200

Screen Shot 2023-02-27 at 3 53 39 AM|1200

RDS

Screen Shot 2023-02-27 at 3 54 55 AM|1200

Screen Shot 2023-02-27 at 3 55 31 AM|1200

Attacker Agent 1

Screen Shot 2023-02-27 at 3 57 11 AM|1200

Attacker Agent 2

Screen Shot 2023-02-27 at 3 58 14 AM|1200

인사이트

이전 실험은 Typeorm의 partial Selection을 적용하여 쿼리 성능이 얼마나 개선되었는지 측정하는 실험이었다. 이번 실험에서 알고싶었던 부분은 이전 실험과 동일한 로직을 다른 시간에 사용하면 어떻게될까였다.

결과는 TPS, Latency에는 큰 차이가 없었다.

  • 이전 실험 : TSP 140, Latency 263
  • 현재 실험 : TSP 138.4, Latency 287

큰 차이점은 이전 실험에서는 실험 후반부 즈음 DB가 중지되었는 반면 이번 실험에는 DB가 끝까지 작업을 안정적으로 수행했다는 점이다. 게다가 CPU의 사용률 또한 이전 실험은 약 98%에 도달한 반면 이번 실험은 89%로 약 9% 낮게 CPU를 사용했다.

또 이상한 부분은 이전 실험의 서버 CPU 사용률은 41.7% 정도밖에 사용하지 않았던 반면 이번 실험은 서버 CPU 사용률이 78.5%까지 증가했다. 두 상황을 비교했을 때 약 35% 이상 차이나는 경우인데, 이는 다소 이해하기 힘든 차이다. 결과 측정이 정확하게 되었는지 다시 점검해볼 필요가 있다.

정리하자면 이렇다.

  • 같은 로직을 실험하더라도 다른 시간대(밤 10시, 새벽 3시)에 진행하느냐에 따라 서버와 DB 성능이 달라진다
  • 이전 실험에서는 DB CPU 사용률이 약 98%까지 상승한 뒤 실험 후반부에서 DB가 정지된 반면, 현재 실험에서는 DB 사용률이 약 89%에 불과했고 실험 기간 동안 안정적으로 모든 작업을 수행했다
  • 두 테스트 간 앱 서버의 CPU 사용률이 30% 이상 차이나는데, 이는 상식적으로 이해가 되지 않는 수치이기에 기록상 문제가 없는지 재확인할 필요가 있다고 판단됨

댓글