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분)