检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
在设置页面开启“初始化配置”,启用函数的初始化,并配置初始化参数。 HTTP函数的“初始化配置”开关默认开启,且不可关闭。 图1 开启初始化配置 表1 初始化配置参数说明 参数 说明 初始化超时时间(秒) 函数初始化的超时时间,可设置范围为1-300秒。
请勿在函数初始化入口捕获异常,否则会导致FunctionGraph认为函数初始化成功,进而开始接收函数调用请求。但是因为初始化实际上是失败的,导致函数执行时使用了不可用的redis_client而失败。 父主题: 代码解读
函数初始化入口Initializer 概述 Initializer是函数的初始化逻辑入口,不同于请求处理逻辑入口的handler,在有函数初始化的需求场景中,设置了Initializer后,FunctionGraph首先调用initializer完成函数的初始化,之后再调用handler
在应用详情页面,如图1所示单击“初始化自定义模型”,请仔细阅读弹出的说明后进行勾选操作,单击“确定”弹出初始化窗口。 图1 初始化自定义模型 在“初始化自定义模型”窗口填写如下参数: VPC:选择“vpc-fg(192.168.x.x/16)”。
initializer_handler String 函数初始化入口,规则:xx.xx,必须包含“. ”。当配置初始化函数时,此参数必填。
在函数详情页“设置 > 生命周期”,开启“初始化配置”,即调用init接口进行初始化。 步骤五:测试函数 在函数详情页,单击“测试”,在弹窗中创建新的测试事件。 选择“空白模板”,事件名称输入“helloworld”,测试事件修改为如下所示,完成后单击“创建”。
mkdir koa-example && cd koa-example 初始化nodejs项目,下载koa框架,文件夹中会新增node_modules文件夹和package.json、package-lock.json文件。
在应用详情页面,如图1所示单击“初始化自定义模型”,请仔细阅读弹出的说明后进行勾选操作,单击“确定”弹出初始化窗口。 图1 初始化自定义模型 在“初始化自定义模型”窗口填写如下参数: VPC:选择“vpc-fg(192.168.x.x/16)”。
在应用详情页面,如图1所示单击“初始化自定义模型”,请仔细阅读弹出的说明后进行勾选操作,单击“确定”弹出初始化窗口。 图1 初始化自定义模型 在“初始化自定义模型”窗口填写如下参数: VPC:选择“vpc-fg(192.168.x.x/16)”。
initializer_handler String 函数初始化入口,规则:xx.xx,必须包含“. ”。当配置初始化函数时,此参数必填。
选择“设置 > 生命周期”,开启“初始化配置”,设置“初始化超时时间”为“60s”,“函数初始化入口”为index.initializer。 图7 初始化配置 父主题: 使用FunctionGraph函数访问Redis数据
华为云FunctionGraph会预先执行函数对应的初始化代码,获取其初始化执行上下文环境的快照,并进行加密缓存。后续调用该函数并触发冷启动扩容时,会直接从提前初始化后的应用快照来恢复执行环境,而非重新走一遍初始化流程,以此达到极大提升启动性能的效果。
配置函数初始化入口。可选,用户可以自定义函数初始化时(接收请求之前)需要进行的操作。
当用户 Java 函数打开冷启动加速的配置开关后,华为云 FunctionGraph 会预先执行函数对应的初始化代码,获取其初始化执行上下文环境的快照,并进行加密缓存。
initializer_handler String 函数初始化入口,规则:xx.xx,必须包含“. ”。当配置初始化函数时,此参数必填。
因为函数是冷启动的,所以如果有初始化或者函数中有第一次执行比较耗时的操作(例如加载函数代码及依赖包),第一次请求会比较慢,后面接着的请求就会很快,因为此时容器还没有销毁。如果间隔一分钟没有请求,容器就会销毁。 如果您使用的是C#或者Go语言,因为机制原因,启动速度会比其他语言慢。
单实例多并发适合函数处理逻辑中有较长时间等待下游服务响应的场景,也适合函数逻辑中初始化时间较长的场景。单实例多并发具备以下优势: 降低冷启动概率,优化函数处理时延:例如并发三个请求,不配置单实例多并发,FunctionGraph默认启动三个实例处理请求,会有三次冷启动。
initializer 方法中,否则只会在初始化时获取一个连接而导致连接池使用无效。
新的函数实例启动后能够自动执行用户的初始化逻辑,在初始化完成后再处理请求。 在应用负载上升,需要增加更多函数实例时,系统能够识别函数应用层初始化的开销,更准确的计算资源伸缩的时机和所需的资源量,让请求延时更加平稳。
initializerTimeout 否 是 初始化超时时间,超时函数将被强行停止,范围1~300秒。 initializerHandler 否 是 函数初始化入口,规则:xx.xx,必须包含“. ”。