云服务器内容精选

  • 应用场景 单实例多并发适合函数处理逻辑中有较长时间等待下游服务响应的场景,也适合函数逻辑中初始化时间较长的场景,具备以下优势: 降低冷启动概率,优化函数处理时延:例如并发三个请求,不配置单实例多并发,FunctionGraph默认启动三个实例处理请求,会有三次冷启动。若配置了单实例支持三并发,三个并发请求,FunctionGraph只启动一个实例处理请求,减少了两次冷启动。 减少总请求处理时长,节省费用:单实例单并发下,多个请求的总处理时长为每个请求的处理时长相加。单实例多并发下,同一个实例对并发的多个请求的计费时间为,从第一个请求开始处理计时,到最后一个并发的请求处理结束记一次时长费用。
  • 单实例单并发与单实例多并发的对比 当一个函数执行需要花费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。
  • 网络限制 根据对网络的不同设置,函数有以下网络访问能力,您可按需设置。 网络配置 说明 允许函数访问公网 当前函数默认的公网NAT访问带宽在多个租户间共享,带宽小,仅适合小量调用的测试业务场景使用;如果对带宽、性能、可靠性有高要求的生产业务场景,需开启函数访问VPC,在VPC内添加公网NAT网关并绑定EIP,分配独占的外网访问带宽。 允许函数访问VPC内资源 开启“允许函数访问VPC内资源”时,函数将禁用默认网卡并使用VPC绑定的网卡,是否允许公网访问由配置的VPC决定,开关“允许函数访问公网”将不生效。 仅允许指定的VPC调用函数 开启“仅允许指定的VPC调用函数”时,将仅允许通过指定的VPC调用函数,并禁止通过公网调用函数。
  • 日志告警 如果没有对函数代码执行返回结果有特定要求,例如绑定了APIG触发器的事件函数需要返回一个APIG响应格式的结果如下: import json def handler (event, context): return { "statusCode": 200, "isBase64Encoded": False, "body": json.dumps(event), "headers": { "Content-Type": "application/json" } } 一般不建议在函数代码内捕获异常,其会导致创建的错误次数告警配置不生效。但是FunctionGraph实现了与云日志服务(LTS)的对接,支持在LTS服务中配置告警,LTS支持日志告警实时监控函数日志中出现的异常信息。 父主题: 使用函数访问Redis数据库
  • 创建委托 登录统一身份认证服务控制台。 在统一身份认证服务的左侧导航窗格中,选择“委托”菜单,单击右上方的“+创建委托”,如图2所示。 图2 创建委托 开始配置委托。 委托名称:LtsOperation。 委托类型:选择“云服务”。 云服务:选择“函数工作流 FunctionGraph”。 持续时间:选择“永久”。 描述:填写描述信息。 单击“下一步”,进入委托权限选择页面,在右方搜索框中搜索“LTS Administrator”权限和“Tenant Administrator”并勾选,如图3所示。 图3 选择权限 选择“LTS Administrator”,由于该策略有依赖,在勾选LTS Administrator时,还会自动勾选依赖的策略:Tenant Guest。 单击“下一步”,请根据业务需要选择权限的作用范围。
  • 日志采集和存储 在云日志服务创建日志组,此处以test1206、test-1121为例,创建过程请参考创建日志组。 在云日志服务创建日志流,此处以test-206、test-1121为例,创建过程请参考创建日志流。 创建函数A,负责写入日志到test-206。函数A代码样例请参考write_log.py。 创建函数B,挂载LTS触发器,接收test-206的日志,处理日志并发结果写入test-1121。函数B代码样例请参考lts_cleanse.py。 在云日志服务配置Agent,快速将ECS等服务器上日志采集到指定的日志组,配置过程请参考安装ICAgent。 图1 流程图
  • 告警消息推送 在SMN消息通知服务创建主题,此处以主题名称fss_test为例,创建过程请参考创建SMN日志主题。 在SMN消息通知服务订阅主题,用于将告警消息推送至该主题下的订阅终端,此处以添加邮件订阅终端为例,订阅fss_test主题,订阅过程请参考订阅主题。 SMN主题名称需添加在函数的环境变量中,以便将告警消息推送至该主题下的订阅终端。环境变量名称为“SMN_Topic”,环境变量值为SMN主题名称。以主题名称fss_test为例,在函数的环境变量配置中添加:“SMN_Topic”:“fss_test”。 订阅主题可选择通过邮件、短信、HTTP/HTTPS等形式推送告警消息 本案例中推送告警消息的事件是:当日志事件通过LTS触发器触发函数执行时,函数中过滤告警日志,产生的告警消息推送至SMN主题的订阅终端。
  • 创建委托 登录统一身份认证服务控制台。 在统一身份认证服务的左侧导航窗格中,选择“委托”页签,单击右上方的“+创建委托”。 图2 创建委托 开始配置委托。 委托名称:LtsOperation。 委托类型:选择“云服务”。 云服务:选择“函数工作流 FunctionGraph”。 持续时间:选择“永久”。 描述:填写描述信息。 单击“下一步”,进入委托选择页面,在右方搜索框中搜索“LTS Administrator”权限和“Tenant Administrator”并勾选。 图3 选择权限 选择“LTS Administrator”,由于该策略有依赖,在勾选LTS Administrator时,还会自动勾选依赖的策略:Tenant Guest。 单击“下一步”,请根据业务需要选择权限的作用范围。
  • 使用限制 单账号跟踪的事件可以通过云审计控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的CTS/system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到对象存储服务(OBS),才可在OBS桶里面查看历史文件。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。
  • 资源包抵扣顺序 抵扣顺序原则 当购买了多个相同类型的资源包,会按照资源包过期时间顺序进行抵扣,如表2所示,优先抵扣过期时间近的资源包。 表2 抵扣顺序原则介绍 场景 某客户分别购买了两个函数调用包 资源包A:规格1亿请求次数,2023年4月10日 生效,购买时长1年,即2024年4月10日 到期。 资源包B:规格2亿请求次数,2023年5月10日 生效,购买时长1年,即2024年5月10日 到期。 抵扣顺序 2023年4月10日~2023年5月9日 只有资源包A生效。 2023年5月10日~2024年4月10日 资源包A、B同时生效,叠加使用。 优先使用资源包A抵扣,若超出资源包A的1亿请求次数的部分使用资源包B抵扣,超出资源包B的2亿请求次数部分则按需计费。 2024年4月11日~2024年5月10日 资源包A过期,只有资源包B生效 使用资源包B抵扣,超出资源包B的2亿请求次数部分按需计费。 2024年5月11日~ 资源包A、B均过期,此时为按需计费。
  • 资源包说明 您可以通过包年(资源包)的方式,提前购买请求次数和计量时间,获取更多的优惠。超出资源包的部分自动转按需计费。如何购买请参考资源包购买。 当前资源包方式仅支持华东-上海一。 函数工作流服务暂不支持退订资源包,建议您在购买资源包前提前规划资源的请求次数和计量时间。 函数工作流服务资源包仅支持抵扣资源包购买后产生的费用,不支持抵扣资源包购买前产生的费用。例如某用户于2023年7月15日购买了1亿请求次数规格资源包,且资源包于购买当天立即生效。那么2023年7月15日购买资源包生效时间前用户使用函数工作流产生的费用不能用资源包抵扣,2023年7月15日生效时间后使用函数工作流产生的请求次数费用可以用资源包抵扣。 FunctionGraph提供的资源包类型如表1所示,各类型资源包中不同规格的价格具体以实际显示为准。 表1 包年资源包类型说明 资源包类型 规格 函数调用包 1亿请求、10亿请求、100亿请求、1000亿请求、5000亿请求 活跃内存计量包 100万GB-秒内存计量时间、1000万GB-秒内存计量时间、1亿GB-秒内存计量时间、10亿GB-秒内存计量时间、100亿GB-秒内存计量时间 GPU计量包 50万GB-秒GPU计量时间、100万GB-秒GPU计量时间、1000万GB-秒GPU计量时间、1亿GB-秒GPU计量时间、10亿GB-秒GPU计量时间
  • 预留实例计费规则 预留实例的创建和释放由用户管理,根据预留实例的执行时长计费。通过预留实例,用户能够预热函数,从而彻底消除冷启动对延时的影响。 当用户调用API创建预留实例时,在预留实例创建成功后开始计费。 当用户调用API释放预留实例时,新的请求不会再路由到该预留实例上,因此该预留实例将在限定的时间内被释放,预留实例释放时停止计费。 图1 预留实例生命周期 如上图1所示,计费时长为T1~T4。 预留实例计量粒度为秒,不足一分钟,按照一分钟计费。超过一分钟,按照实际执行时长计费。 例如预留实例执行时长为51秒,按照1分钟计费。执行时长为61秒,则计费时长仍然为61秒。 执行时间费用的单位为GB-秒,指函数内存规格为1GB时,执行1秒的费用。
  • 适用计费项 函数工作流实际费用是由请求次数费用、执行时间费用、函数流节点执行次数和其他费用构成,各计费项按需计费说明请参见表1。 表1 计费项说明 计费项 说明 请求次数 在您使用函数的过程中会产生请求次数费用,请求次数是所有函数的请求总数。 执行时间费用 执行时间费用包含两个变量:执行时间和函数分配的内存大小。同时函数工作流又提供预留和按量两种类型的实例。以下介绍二者计算资源消耗的方式: 未使用预留实例的情况下,函数计算资源消耗是函数所选内存和函数执行时间的乘积,执行时间是从函数代码开始执行的时间算起到其返回或终止的时间为止,计量的粒度是1秒,不足1秒按1秒计费。 使用预留实例的情况下,函数计算资源消耗是函数所选内存和函数执行时间的乘积,执行时间是从实例创建成功后开始算起到用户调用API释放预留实例为止。如果预留实例存活时间不足1分钟,将按照 1 分钟计算,超过一分钟的部分,按照秒的粒度向上取整计算。 节点执行次数(函数流) 函数流中除开始、结束和异常分支节点外,其他节点都要统计执行次数计费。 其他费用 在您使用函数工作流服务过程中,如果搭配使用了其它华为云服务,如OBS、SMN等,则您需要为该服务支付额外的费用,具体费用请参考价格详情。
  • 计费周期 华为云函数工作流 FunctionGraph 按照实际使用量付费,没有最低消费。计费模式采用累计分档计费,按天结算,即每日3点后对前一日使用量进行扣费。例如,2023-05-11 00:00:00至2023-05-11 23:59:59期间产生的费用,通常会在2023-05-12 03:00:00左右完成扣费。 函数响应事件通知或调用(包括控制台的测试调用)开始执行时记为一次请求,请求次数是所有函数的请求总数。 未使用预留实例情况下,执行时间是从函数代码开始执行的时间算起到其返回或终止的时间为止。计量粒度是1秒,不足1秒按1秒计费,超过1秒按实际执行时间计算。 使用预留实例情况下,执行时间是从实例创建成功后开始算起到用户调用API释放预留实例为止。计量粒度是1秒,不足1分钟按1分钟计算,超过一分钟的部分,按照秒的粒度向上取整计算,比如运行时间为51秒,将按60秒计算;运行时间为60.5秒,则按61秒计算,以此类推。
  • 函数运行资源限制 表2 函数运行资源限制说明 资源 默认值 是否可通过用户自己调整配额 临时磁盘空间(“/tmp”空间) 512MB 否,如需调整请咨询函数工作流服务客服。 文件描述符 1024 否,如需调整请咨询函数工作流服务客服。 进程和线程数(总和) 1024 否,如需调整请咨询函数工作流服务客服。 单个请求最大执行时长 259200秒 是 函数同步调用请求正文有效负载大小 6MB 否,如需调整请咨询函数工作流服务客服。 函数同步调用响应正文有效负载大小 6MB 否,如需调整请咨询函数工作流服务客服。 函数异步调用请求正文有效负载大小 256KB 否,如需调整请咨询函数工作流服务客服。 函数导入的资源大小 zip格式压缩文件,大小50MB以内 否,如需调整请咨询函数工作流服务客服。 单个自定义镜像函数最大允许镜像大小 10GB 否,如需调整请咨询函数工作流服务客服。 函数导出资源包大小 50MB以内 否,如需调整请咨询函数工作流服务客服。 租户级别实例数限制 1000 是 函数最大申请内存 10G 否,如需调整请咨询函数工作流服务客服。 带宽 无限制 - 单条日志大小 无限制 - Initializer最大运行时间 259200秒 是 函数同步调用响应正文有效负载大小:返回的字符串或返回体序列化后的json字符串默认不大于6MB。具体数据大小会随FunctionGraph系统后台设置产生变化,因为系统后台判断的是序列化之后的数据大小,所以会存在字节级别的误差,误差范围为6MB±100bytes。 FunctionGraph控制台不建议调用执行时间超过90秒的函数;若需要调用执行时间超过90秒的函数,请使用异步调用的方式。 Kafka/DDS/GeminiDB Mongo/DIS触发器调用的请求正文有效负载大小为6M,APIG触发器调用的请求正文有效负载大小为4M。