Skip to content
김동환 edited this page Aug 20, 2024 · 18 revisions

리뷰

캠핑장 리뷰 조회 5분 간격

users 100

image image (1)

users 200

image (2) image (3)

users 300

image (4) image (5)

users 400

image (6) image (7)

users 500

image (8) image (9)

backend ec2

스크린샷 2024-08-16 오후 6 10 48

lb 대상 응답 시간

image (10)

db ec2

스크린샷 2024-08-16 오후 6 11 38

lb 요청

image (11)

리뷰 수정 5분 간격

users 100 / 1

image image (1)

users 100 / 10

image (2) image (3)

users 200 /10

image (4) image (10)

users 300 /10

image (5)
image (6)

backend ec2

image (7)

lb 대상 응답 시간

image (8)

db ec2

image (9)

FAILURE

image (12) image (13)

  • 이슈
    • RPS가 저조함
    • USER 200부터 실패율이 크게 증가 ( 501, 504 에러 )
    • DynamoDB 처리에 문제 발생
    • 응답 시간이 들쭉날쭉 함
  • 분석
    • 트랜잭션 어노테이션이 dynamoDB에서 온전하게 작동하지 않은 거 같음
    • 한 번의 요청에 리뷰, 마이리뷰, 별점평균 총 3개의 테이블 연산이 포함된 것도 부하의 원인인 거 같음
    • 조회 시 생성일로 정렬하는데, 생성일은 인덱스 설정이 되지 않아 조회 성능이 떨어지는 거 같음
  • 개선 방안
    • DynamoDB의 TransactWriteItems 또는 TransactGetItems 작업 등을 시도
    • existsByUserIdAndCampId 메서드 성능 개선을 위한 userId, campId 복합 인덱스 고려
    • 캐시 도입해서 캐시에서 값 변동 후 db 업데이트는 나중
    • 리뷰 수정 과정에서 실행되는 각 과정의 실행 시간을 측정하여 병목 지점 파악
    • 업데이트 요청 시 요청된 값들이 db나 캐시에 저장된 값과 일치하다면 리턴시키기
    • 리뷰 아이디와 생성일 복합 인덱스 설정
캠핑장 리뷰 조회 5분 간격

users 100

image image (1)

users 200

image (2) image (3)

users 300

image (4) image (5)

users 400

image (6) image (7)

users 500

image (8) image (9)

backend ec2

스크린샷 2024-08-16 오후 6 10 48

lb 대상 응답 시간

image (10)

db ec2

스크린샷 2024-08-16 오후 6 11 38

lb 요청

image (11)

Clone this wiki locally