본문 바로가기
Log/Experiment

exp005_Redis 적용 후 조회 성능 변화 관찰 실험

by RIEM 2023. 2. 27.

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

Screen Shot 2023-02-27 at 3 45 01 AM|1000

nestjs 어플리케이션에 Redis를 적용할 수 있는 방법이 다양하다. Redis 라이브러리를 직접 설치할 수도 있고 Cache-manager 라이브러리의 Store에 Redis를 적용하는 방법 등이 있다. 나는 후자 Cache-manager 라이브러리로 Redis를 사용하여 테스트를 진행했다.

Data Recording & Analysis

nGrinder Report

Screen Shot 2023-02-27 at 3 23 42 PM|1200

  • 초기 부하는 Ramp-up으로 시작했기에 부드럽게 TPS가 상승했다
  • TPS는 약 785.6
  • Latency는 약 50.51ms
  • 수행 Test 수는 약 70만회
  • 테스트 진행 약 9분 전에 TPS가 800대에서 500대 이하로 급락했으나 1분 내 다시 회복

Screen Shot 2023-02-27 at 3 23 51 PM|1000

Application Server

Screen Shot 2023-02-27 at 3 36 42 PM|1000


웹 서버의 CPU 사용률은 99.8%에 도달

Screen Shot 2023-02-27 at 3 37 11 PM|1000

  • 흥미로운 점은 CPU 사용률이 99%에 도달했다는 점
  • 바로 99%에 도달하지 않고 점진적으로 도달했다는 점

RDS

Screen Shot 2023-02-27 at 3 38 32 PM|1000

  • Redis 덕분에 DB의 CPU 사용률은 큰 변동이 없었다

Screen Shot 2023-02-27 at 3 39 00 PM|1000

nGrinder Agent 1

Screen Shot 2023-02-27 at 3 42 03 PM|1000Screen Shot 2023-02-27 at 3 42 16 PM|1000

nGrinder Agent 2

Screen Shot 2023-02-27 at 3 43 01 PM|1000Screen Shot 2023-02-27 at 3 43 12 PM|1000

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

댓글