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
실험 조건은 동일하다.
while Experiment
Slow query 로그 기준을 50ms으로 정해두었다. 50ms 이상 넘어가는 쿼리들이 얼마나 나오는지 직접 관찰하고 시었는데, 40% 이상은 슬로우 쿼리가 뜬거 같다.
Result
NGrinder Report
이번 테스트의 결과 수치는 아래와 같다.
- TPS : 138.4
- Peak TPS : 159
- MTT : 287.37
- 실행 Test 수 : 123746
이 그래프를 보고 바로 떠오른 느낌은 이전 테스트 비해 안정적이라는 점이다. 80에서 140대로 안정적으로 올라간 도입부 부분도 마음에 들고, 처음부터 끝까지 대체로 평균 120 - 150 TPS 사이를 유지한 점도 마음에 들었다.
Previous test vs. Current one
- Related exp(Top) : test-pyramid-20230224-002
- Exp code(Bottom) : test-pyramid-2023027-001
Application Server
RDS
Attacker Agent 1
Attacker Agent 2
인사이트
이전 실험은 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% 이상 차이나는데, 이는 상식적으로 이해가 되지 않는 수치이기에 기록상 문제가 없는지 재확인할 필요가 있다고 판단됨
'Log > Experiment' 카테고리의 다른 글
exp006_Redis 적용 로직 VUser 변동에 따른 성능 비교 (0) | 2023.03.01 |
---|---|
exp005_Redis 적용 후 조회 성능 변화 관찰 실험 (0) | 2023.02.27 |
exp003_DB CPU 한계점 파악 실험 (0) | 2023.02.27 |
exp002_TypeOrm_partial Selection 사용 여부에 따른 성능 변화 관찰 (0) | 2023.02.24 |
exp001_TypeOrm_관계 참조 여부에 따른 쿼리 성능 비교 실험 (0) | 2023.02.24 |
댓글