Vercel部署Next.js应用出现504 serverless function invocation错误如何解决
Vercel部署Next.js触发504
serverless function invocation 报错的常见原因 504报错本质是无服务函数执行时长超过了平台限制,触发了超时中断,对应场景的常见诱因如下:
- 执行时长超过阈值:Vercel免费套餐无服务函数的默认最大执行时长为10秒,付费套餐最高可设置为60秒。执行超时的常见场景包括:
- 服务端请求第三方接口时网络波动、响应过慢
- 数据库查询/连接耗时过长,冷启动阶段的连接建立耗时叠加查询耗时更容易触发阈值
- 服务端存在未优化的重计算逻辑,执行耗时过长
- 冷启动耗时过高:无服务函数长期无请求时会被平台回收,新请求到来时需要重新初始化实例。如果初始化阶段需要加载大量依赖、建立全局连接,会额外增加耗时,很容易叠加业务逻辑耗时超过时长限制。
- 函数打包体积过大:服务端引入不必要的依赖会导致无服务函数打包体积超标,函数初始化加载耗时明显升高,提高超时概率。
对应解决方案
- 本地模拟生产环境执行对应接口、SSR逻辑,统计实际执行耗时,优先优化核心逻辑:拆分长耗时任务为异步处理、给外部请求增加超时限制和重试逻辑、给数据库查询添加索引优化语句。
- 数据库连接慢的场景可以改用连接池工具,或切换Edge Runtime降低冷启动开销。
- 梳理服务端依赖,剔除无效引入,减小无服务函数打包体积。
- 付费用户可直接在Vercel控制台调整无服务函数的最大执行时长上限。

内容的提问来源于stack exchange,提问作者klondike
相关产品推荐
相关产品推荐

