
# 配置函数的快照式冷启动
#### 快照式冷启动概述
FunctionGraph支持基于进程级快照的冷启动加速方案，用户无需额外付费，只需进行简单的配置、少量的代码修改，即可享受到该方案带来的冷启动性能提升。
当用户的Java函数启用快照式冷启动后，FunctionGraph会预先执行函数对应的初始化代码，获取其初始化执行上下文环境的快照，并进行加密缓存。后续调用该函数时会触发冷启动，**直接从提前初始化后的应用快照来恢复执行环境**，而非重新走一遍初始化流程，以此达到极大提升启动性能的效果。
![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002303029052.png "点击放大")
#### 约束与限制
- 当前仅Java运行时函数支持配置快照式冷启动。
- 如果函数强依赖于有状态，需要考虑使用Restore Hook进行状态刷新。
- 对于强依赖CPU指令集特性的函数，请先[工单系统](https://console.huaweicloud.com/ticket/?agencyId=e4ebeeb18baa4ae58946b5342fa6159d#/ticketindex/createIndex)提前联系技术工程师确认是否可以使用快照式冷启动。
- 依赖硬编码Host环境（如hostname或者hostip）的函数，在迁移到其他主机上时，使用快照式冷启动可能会有问题。请先提前在[工单系统](https://console.huaweicloud.com/ticket/?agencyId=e4ebeeb18baa4ae58946b5342fa6159d#/ticketindex/createIndex)提交工单联系技术工程师进行确认，建议避免依赖这些变量。
- 快照式冷启动当前仅支持基于x86机器开发的应用。
 
#### 配置快照式冷启动
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
2. 单击函数的名称，进入函数详情页。在"设置"页签下选择"高级设置"。
3. 开启"快照式冷启动"开关。
   图1开启快照式冷启动   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002117778477.png "点击放大") 
4. （可选）如果函数强依赖于有状态，还需配置Restore Hook进行状态刷新，并在函数代码中实现对应的Hook逻辑。
   - Hook超时时间（秒）：Hook处理函数的执行超时时间。
   
   - Hook处理函数：Hook处理函数的入口，格式：\[包名\].\[类名\].\[执行函数名\]，不超过128个字符。
   
   
   图2开启Restore Hook   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002082099470.png "点击放大")
   函数代码中Restore Hook示例如下：
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002082254214.png "点击放大")
   
5. 完成后单击"保存"，保存快照式冷启动配置。
6. 参考[发布新版本](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0180.html#functiongraph_01_0180__section2930162719332)发布函数版本，发布版本时开启"快照式冷启动"，触发快照的自动化制作。
   图3发布新版本   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002110933585.png "点击放大") 
7. 等待快照制作完成（5分钟超时时间）。
   图4快照制作中   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002110933589.png "点击放大")
   图5快照制作成功   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002117778473.png "点击放大") 
8. 调用开启了快照式冷启动的Java函数，查看执行日志中的快照式冷启动信息，如[图6]所示。
   图6启动日志   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002082099450.png "点击放大") 
 
#### 相关文档
- 除使用控制台外，函数工作流支持通过API的方式管理函数的生命周期，详情请参见[函数生命周期管理API](https://support.huaweicloud.com/api-functiongraph/FunctionLifecycleManagement.html)。
- 在函数实际使用过程中如何进行冷启动优化，请参考[FunctionGraph冷启动优化实践](https://support.huaweicloud.com/bestpractice-functiongraph/functiongraph_05_1184.html)。
 
