You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GET /api/baskets API 응답 속도가 40s 입니다. 사용자는 페이지에 접속해서 40초 후에 데이터를 확인할 수 있습니다.
문제 원인
위 API는 관심 과목 담기 데이터를 모두 응답합니다. 관심 과목 담기 데이터는 2422개이고 총 512kb입니다.
전체 데이터를 응답으로 내리는 작업 자체가 큰 오버헤드로 작용합니다.
예상되는 원인은 아래와 같습니다.
MySQL 풀스캔 시간이 길다.
DB에서 조회한 데이터를 서버 메모리에 적재하고 처리하는 과정이 오래 걸린다.
데이터가 너무 커서 네트워크 시간이 오래 걸린다.
모니터링과 테스트를 통해 어떤 지점에서 병목이 발생하는지, 근본적으로 API를 수정하는 게 좋을지 분석이 필요해요.
해결 방안
API 응답 결과는 json 형태인데, json 파일을 통째로 cdn에 보관하고 응답하는 방법이 있어요. 요청이 서버를 거치지 않기 때문에 서버에 부하를 덜 수 있다. 이렇게 해도 응답 크기 자체가 줄어들지 않기 때문에 네트워크 병목은 해결할 수 없어요. 이는 gzip 압축으로 해결할 수도 있어요.
페이지네이션을 적용하는 거예요. 응답 크기 자체가 줄기 때문에 속도가 개선될 거예요. 다만, 이는 여러 추가 작업이 필요할 수 있는데요. 현재 구조는 클라이언트가 모든 데이터를 갖고 있지만, 페이지네이션을 적용하면 클라이언트가 필요한 데이터가 추가될 수 있기 때문이에요. 서버 측에서도 페이지네이션으로 인한 성능 저하에 유의해야 해요.
The text was updated successfully, but these errors were encountered:
문제 상황
GET /api/baskets
API 응답 속도가 40s 입니다. 사용자는 페이지에 접속해서 40초 후에 데이터를 확인할 수 있습니다.문제 원인
위 API는 관심 과목 담기 데이터를 모두 응답합니다. 관심 과목 담기 데이터는 2422개이고 총 512kb입니다.
전체 데이터를 응답으로 내리는 작업 자체가 큰 오버헤드로 작용합니다.
예상되는 원인은 아래와 같습니다.
모니터링과 테스트를 통해 어떤 지점에서 병목이 발생하는지, 근본적으로 API를 수정하는 게 좋을지 분석이 필요해요.
해결 방안
The text was updated successfully, but these errors were encountered: