eco-dessert-platform / backend

Apache License 2.0
0 stars 0 forks source link

게시글 조회 성능 개선(heap 메모리 사용량 줄이기, 첫 조회에 대하여 캐싱 적용) #285

Closed shoeone96 closed 1 month ago

shoeone96 commented 1 month ago

name: "✅ Feature" about: Feature 요구 사항을 입력해주세요. title: "✅ Feature" labels: ✅ Feature assignees: ''


History

🚀 Major Changes & Explanations

1. LinkedHashMap heap 메모리 차지하는 문제 해결

before(약 10분간 LinkedHashMap 객체가 Heap 영역에 남아있음을 확인)

스크린샷 2024-10-11 오전 10 58 35 스크린샷 2024-10-11 오후 1 23 22

After(부하테스트 요청 후 바로 객체가 사라짐을 확인)

스크린샷 2024-10-11 오후 1 22 01 스크린샷 2024-10-11 오후 1 23 03

2. 매번 호출되는 요청에 대해 캐싱 도입

캐싱 적용 전

스크린샷 2024-10-12 오후 3 26 38 스크린샷 2024-10-12 오후 3 26 42

캐싱 적용 후

스크린샷 2024-10-12 오후 5 07 02 스크린샷 2024-10-12 오후 5 07 06

성능 약 10배 이상 향상 확인

📷 Test Image

💡 ETC

sunwon12 commented 1 month ago

많은 일들 하느라 고생 많으셨습니다 중원님!

이번에도 한 수 배워갑니다..

heap 문제해결 관련해서 두 가지 여쭤보고 싶습니다

  1. 어떻게 heap 메모리 초과하는 API를 찾으셨나요?
  2. LinkedHashMap이 문제였다는 건 어떻게 알게되셨나요?
shoeone96 commented 1 month ago

@sunwon12

위에 남겨주신 질문에 대해서는 조회 API 부하테스트 중 heap 메모리가 정상적으로 동작하지 않는 API를 발견하였고 그 과정에서 어떤 객체가 쌓여있길래 heap 메모리가 잘못작동하는 걸까 추적하던 도중 LinkedHashMap을 heap dump 스냅샷과 실제로 API 에서 호출하는 메서드를 따라가면서 어떤 객체가 생성되는지 하나하나 살펴본 결과 확인할 수 있었습니다.