목록 보기
Next.js에서 QueryClient를 전역변수로 사용해도 될까요?
프론트엔드

Next.js에서 QueryClient를 전역변수로 사용해도 될까요?

펫프렌즈
펫프렌즈
2026년 1월 27일

두줄요약

Next.js SSR에서 전역 QueryClient를 공유하면 요청 데이터가 누적되어 메모리 누수가 발생했습니다. 요청마다 QueryClient를 분리해 GC가 회수할 수 있도록 개선했습니다.

문제 상황

  • Next.js SSR 서버에서 메모리 사용량이 지속 증가하고 GC 후에도 해제되지 않는 메모리 누수 발생
  • 페이지 이동과 시간이 지날수록 메모리가 쌓이고, OOM 직전까지 가며 주기적 재시작이 필요했던 상태

원인 분석

  • 모듈 레벨 전역 변수로 생성한 QueryClient가 서버의 모든 요청에서 공유
  • 각 요청의 상품 데이터와 Query Key가 하나의 캐시에 누적되어 참조가 유지되는 구조

해결 방법

  • _app.tsx에서 useState 초기화 함수로 요청별 QueryClient 인스턴스 생성
  • 사용처에서는 useQueryClient로 현재 컨텍스트의 QueryClient를 가져와 캐시 조작

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...