上云无忧 > 文档中心 > 腾讯云云函数使用教程 - 错误类型与重试策略
云函数 SCF
腾讯云云函数使用教程 - 错误类型与重试策略

文档简介:
在函数调用的过程中,可能有多种原因导致函数调用失败。不同的错误类型以及调用方式(同步调用、异步调用)都会影响重试策略。您可以配置 死信队列 收集错误事件信息、分析失败原因。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠
在函数调用的过程中,可能有多种原因导致函数调用失败。不同的错误类型以及调用方式(同步调用、异步调用)都会影响重试策略。您可以配置 死信队列 收集错误事件信息、分析失败原因。

错误类型

在函数调用的过程中,可能有多种原因导致函数调用失败。错误类型分为以下几类:

调用错误

调用错误发生在函数实际执行前。以下情形均会产生调用错误:
调用请求错误。例如传入的 Event 数据结构过大、入参不符合要求、函数不存在等。
调用方错误。主要出现在调用方权限不足的情形。
超限错误。调用的并发数超出 最大并发数 限制。

运行错误

运行错误发生在函数实际运行中。运行错误有以下情形:
用户代码运行错误。这类错误出现在用户代码执行过程中,例如函数代码抛出异常,或者返回结果格式问题等。
Runtime 错误。函数运行过程中,Runtime 负责拉起用户代码并执行。Runtime 错误指的是 Runtime 发现并上报的错误,例如函数运行超时(超时的时间限制请参见 限制说明、代码语法报错等。

系统错误

函数平台的错误,例如 internal error。

重试策略

不同错误类型以及调用方式(同步调用、异步调用)都会影响重试策略。

同步调用

同步调用包含:云 API 触发器 的同步调用、API 网关触发器CKafka 触发器CLB 触发器。 由于同步调用的过程中,错误信息会直接返回给用户,所以在同步调用中发生错误时,平台不会自动重试,重试策略(是否重试、重试几次)均由调用方决定。
注意
Ckafka 触发器会创建后台模块作为消费者,连接 CKafka 实例并消费消息。后台模块在获取到消息后,同步调用触发函数。由于 CKafka 触发器的后台模块是由云函数侧维护,即使是同步调用,其重试策略仍由云函数侧控制。
对于运行错误(含用户代码错误和 Runtime 错误),CKafka 触发器会按照您配置的重试次数进行重试。默认重试10000次。
对于超限错误和系统错误,CKafka 触发器会采用指数退避的方式持续重试,直至成功为止。

异步调用

异步调用包含:云 API 触发器 的异步调用、COS 触发器定时触发器CMQ Topic 触发器 等,具体触发器调用类型请参考相关 触发器说明文档。 您可以根据业务诉求在函数配置中修改和自定义默认的重试次数最长等待时间配置,该配置只适用于异步调用场景。

重试次数:函数返回错误时云函数重试的次数,该参数只适用于运行错误的策略配置,默认配置为2次。
最长保留时间:云函数在异步事件队列中保留事件的最长时间,该参数适用于所有异步调用的重试配置,默认配置为 6 小时,最大长度支持 10 万条。
异步调用发生各种错误类型的重试策略:
错误类型
重试策略
系统错误
函数请求执行状态码为 500。当发生该类错误时,函数平台会根据您配置的最长保留时间持续重试(默认持续重试6小时),重试间隔 1 分钟。如果您配置了死信队列,重试超过最长保留时间仍失败的事件会被发送到死信队列,您可进一步处理,否则事件将被函数平台丢弃。
超限错误
函数请求执行状态码为 432。当发生该类错误时,函数平台会根据您配置的最长保留时间持续重试(默认持续重试6小时),重试间隔 1 分钟。如果您配置了死信队列,重试超过最长保留时间仍失败的事件会被发送到死信队列,您可进一步处理,否则事件将被函数平台丢弃。
运行错误(除系统错误与超限错误外,其他错误均为运行错误)
当发生该类错误时,函数平台按照配置的重试次数进行重试,重试间隔 1 分钟。在自动重试的同时,新的触发事件仍可正常处理。如果您配置了死信队列,按照配置的重试次数重试后仍失败的事件或超出最长等待时间的事件将传入死信队列,否则事件将被函数平台丢弃。
注意:
1. 由于运行机制差异,重试及死信队列配置对于异步调用的 异步执行 函数在执行过程中发生错误的请求无效。
2. 如何判断是否超出最长等待时间?事件重试的时间-事件首次触发的时间大于最长等待时间即为超出最长等待时间。
相似文档
  • 操作场景: 死信队列 DLQ 是一个用户账号下的消息队列,可用于收集错误事件信息、分析失败原因。如果您为函数配置了死信队列,以下情形的事件会被发送到死信队列: 用户代码运行错误重试2次依然失败。 超限错误和系统错误重试超过24小时。 异步队列 消息堆积达到上限。
  • 简介: 随着敏捷和 DevOps 的流行,CI/CD 已经成了所有开发者在开发过程中必不可少的最佳实践,主要目标是以更快的速度、更短的周期向用户交付行之有效的软件。
  • 对于函数运行后抛出的错误信息,您可以检索错误内容找到对应的问题产生原因和解决方案。
  • 常见错误码解决方法如下表所示: InvalidParameter.FunctionName: FunctionName 取值与规范不符,请参见 API 文档 修正后重试。 InvalidParameterValue.Action: 所请求的 API 不存在,请参见 API 文档 修正后重试。
  • 概述: Serverless Web IDE 是腾讯云 Serverless 和 CODING 基于浏览器的集成式开发环境 CloudStudio 深度合作推出的云函数在线开发 IDE,提供接近原生 IDE 的云端开发体验。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部