Title
exp005_DB Redis 적용 후 조회 성능 변화 관찰
Research Question
Redis를 적용하면 어플리케이션 전체 시스템 성능은 얼마나 나아질까?
Summary
- Redis 적용 이후 5배 이상 성능이 향상됨(Redis 적용 후 Throughput이 138 -> 785로 약 5.5배 증가했고, Latency는 287 -> 50으로 1/5 수준으로 감소)
- 웹서버의 CPU 사용률이 99%에 도달한 점이 문제
- 그에 비해 DB CPU 사용률의 변동은 미미했음
- 단, VUse가 40에 불과하기 때문에 실제 극한의 상황을 고려한다면 더 높은 VUser을 적용하여 테스트할 필요가 있음
Background Information
Situation : 부하 테스트 툴 nGrinder을 활용하여 경매 래플 어플리케이션 시스템의 서버 부하 테스트 진행중인 상황.
Current Experiment : test-pyramid-20230227-002
Related Experiment : test-pyramid-20230227-001
실험 조건
- Vuser : 40
- Duration : 15mins
- Ramp-Up : True
Procedures
nestjs 어플리케이션에 Redis를 적용할 수 있는 방법이 다양하다. Redis 라이브러리를 직접 설치할 수도 있고 Cache-manager 라이브러리의 Store에 Redis를 적용하는 방법 등이 있다. 나는 후자 Cache-manager 라이브러리로 Redis를 사용하여 테스트를 진행했다.
Data Recording & Analysis
nGrinder Report
- 초기 부하는 Ramp-up으로 시작했기에 부드럽게 TPS가 상승했다
- TPS는 약 785.6
- Latency는 약 50.51ms
- 수행 Test 수는 약 70만회
- 테스트 진행 약 9분 전에 TPS가 800대에서 500대 이하로 급락했으나 1분 내 다시 회복
Application Server
웹 서버의 CPU 사용률은 99.8%에 도달
- 흥미로운 점은 CPU 사용률이 99%에 도달했다는 점
- 바로 99%에 도달하지 않고 점진적으로 도달했다는 점
RDS
- Redis 덕분에 DB의 CPU 사용률은 큰 변동이 없었다
nGrinder Agent 1
nGrinder Agent 2
Discussion
- Redis 적용 후 DB의 CPU 사용률은 거의 변동이 없다. DB가 해야할 일을 웹서버의 메모리가 직접 처리해준 결과일까.
- Redis 적용 후 웹 서버의 CPU 사용률이 최대치로 상승했다. 그런데 급격히 상승하지 않고 점진적으로 상승했다가 점진적으로 하락한 점이 흥미롭다
- 현재 시간 단위로 테스트를 하고 있는데 Run Count 단위로 테스트하는 것이 더 적절한 것이 아닐까?
- 현재 Vuser가 40에 불과한데 실제 서비스 환경 대비 너무 낮은 수준이 아닌지?
Conclusion
- Redis 적용 전 Throughput 138.4 / Latency 287.37
- Redis 적용 후 Throughput 785.6 / Latency 50.51
- Redis 적용 후 Throughput이 138 -> 785로 약 5.5배 증가했고, Latency는 287 -> 50으로 1/5 수준으로 감소. Redis 적용 이후 5배 이상 성능이 향상됨
- 단, 웹서버의 CPU 사용률이 99%에 도달한 점이 문제
- 그에 비해 DB CPU 사용률의 변동은 미미했음
Reference
'Log > Experiment' 카테고리의 다른 글
exp007_스케일업 전후 어플리케이션 성능 비교 실험 (0) | 2023.03.01 |
---|---|
exp006_Redis 적용 로직 VUser 변동에 따른 성능 비교 (0) | 2023.03.01 |
exp004_동일한 로직을 다른 시간대에 테스트하여 성능 차이 비교 (0) | 2023.02.27 |
exp003_DB CPU 한계점 파악 실험 (0) | 2023.02.27 |
exp002_TypeOrm_partial Selection 사용 여부에 따른 성능 변화 관찰 (0) | 2023.02.24 |
댓글