Vercel에 배포할 때 타임아웃이 나는 경우

Vercel에 배포할 때 타임아웃이 나는 경우 (Getting Timeouts When Deploying on Vercel)

AI SDK 스트리밍을 Vercel에 배포했을 때 긴 응답이 UI에서 잘려 보이고 타임아웃이 나는 문제를 다루는 문서예요. Vercel의 Fluid Compute 기본 함수 지속시간과 maxDuration 설정으로 타임아웃을 늘리는 방법이 핵심이에요.

출처: 문서

본문

문제 (Issue)

AI SDK로 스트리밍이 로컬 개발 환경에서는 잘 동작합니다. 하지만 Vercel에 배포하면, 긴 응답이 UI에서 잘려 보이고 Vercel 로그에서 타임아웃이 보이거나 Uncaught (in promise) Error: Connection closed 오류가 나타납니다.

해결 방법 (Solution)

Vercel의 Fluid Compute를 사용하면 기본 함수 지속시간은 모든 플랜에서 5분(300초) 입니다. 대부분의 스트리밍 애플리케이션에는 이 정도면 충분합니다.

더 오래 걸리는 프로세스에 타임아웃을 연장해야 한다면, maxDuration 설정을 늘릴 수 있습니다:

Next.js (App Router)

Server Action을 호출하는 라우트 파일 또는 페이지에 다음을 추가하세요:

export const maxDuration = 600;

maxDuration을 300초 이상으로 설정하려면 Pro 또는 Enterprise 플랜이 필요합니다.

기타 프레임워크 (Other Frameworks)

다른 프레임워크에서는 vercel.json 파일에 타임아웃을 설정할 수 있습니다:

{
  "functions": {
    "api/chat/route.ts": {
      "maxDuration": 600
    }
  }
}

maxDuration을 300초 이상으로 설정하려면 Pro 또는 Enterprise 플랜이 필요합니다.

최대 지속시간 제한 (Maximum Duration Limits)

설정할 수 있는 최대 지속시간은 Vercel 플랜에 따라 달라집니다:

  • Hobby: 최대 300초 (5분)
  • Pro: 최대 800초 (~13분)
  • Enterprise: 최대 800초 (~13분)

더 알아보기 (Learn more)

전체 사이트맵