函数工作流 FUNCTIONGRAPH-配置函数的并发处理:单实例单并发与单实例多并发的对比

时间:2025-01-10 18:13:20

单实例单并发与单实例多并发的对比

当一个函数执行需要花费5秒,若配置为单实例单并发,三次函数调用请求分别在三个函数实例执行,总执行时长为15秒。

若配置为单实例多并发,设置单实例并发数为5,即单个实例最多支持5个并发请求,如果有三次函数调用请求,将在一个实例内并发处理,总执行时间为5秒。

单实例并发数大于1,在您设置的“单函数最大实例数”范围内,超过单实例并发处理能力时会自动扩容新实例。

表1 单并发与多并发对比

对比项

单实例单并发

单实例多并发

日志打印

-

Node.js Runtime使用console.info()函数,Python Runtime使用print()函数,Java Runtime使用System.out.println()函数打印日志,该方式会把当前请求的Request ID包含在日志内容中。当多请求在同一个实例并发处理时,当前请求可能有很多个,继续使用这些函数打印日志会导致Request ID错乱。此时应该使用context.getLogger(),获取一个日志输出对象,通过这个日志输出对象打印日志,例如Python Runtime:

log = context.getLogger()

log.info("test")

共享变量

不涉及

单实例多并发处理时,修改共享变量会导致错误。这要求您在编写函数时,对于非线程安全的变量修改要进行互斥保护。

监控指标

按实际情况进行监控。

相同负载下,函数的实例数明显减少。

流控错误

不涉及

太多请求时,body中的errorcode为“FSS.0429” ,响应头中的status为429 ,错误信息提示:Your request has been controlled by overload sdk, please retry later。

support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0303.html