开发者社区 > 云原生 > Serverless > 正文

启动不了怎么回事呢?

启动不了怎么回事呢?

提问17.png

展开
收起
Java工程师 2023-01-04 20:51:15 579 0
2 条回答
写回答
取消 提交回答
  • 好像是因为你本地没装go环境

    此答案来自钉钉群“Serverless 开发者技术学习群”

    2023-01-05 14:11:51
    赞同 展开评论 打赏
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    Serverless分为冷启动和热启动,整个函数运行需要四步:下载代码,启动容器,初始化运行环境,运行代码。当函数第一次执行时,会经过完整的四个步骤,前三个过程统称为“冷启动”,最后一步称为“热启动”。

    当容器从“冷态”开始启动时,函数需要: 从外部持久化存储中获取代码包; 逐步启动(Spin up)容器; 在内存中加载程序包代码; 运行函数的处理程序(handler)方法/函数。 这些步骤需要一段时间才能完成,尤其是第 1 到第 3 步。当容器已经变“热”后,它会直接跳到第 4 步,这样可以节省大量的时间并能使应用程序的响应更快。

    “冷启动”的影响从几百毫秒到几秒或几十秒不等。有些原因会导致导致冷启动延迟。比如内存大小:分配给函数的内存越多,启动速度越快; 运行时:与编译运行时(Java、.NET、C#)相比,通常脚本语言(Python、Ruby、Javascript)在启动时的性能要好得多, 速度能提高 100 倍,; VPC:在虚拟私有云中运行的函数会有额外的延迟,通常要多一到两秒才能启动;尝试着将你的函数设计为运行于 VPC 之外;

    代码包大小:包越大,启动新容器所需的时间越长,尽管如此,这可能是影响启动延迟最不重要的因素了。

    以下 6 种策略可以解决或至少可以缓解容器启动延迟对 Serverless 应用程序的影响: 监控性能并记录相关指标, 增加内存分配, 选择更快的运行时, 将共享数据保存在内存中, 压缩程序包的大小, 保留一个预热的函数池, 使用时间序列预测。

    在函数执行期间最好始终记录时间戳,并监控函数调用历史记录中的持续时间异常值。 每当它的性能低于预期时,查看日志并确定代码的哪些部分导致了性能的下降。

    2023-01-05 11:22:33
    赞同 1 展开评论 打赏
问答地址:

快速交付实现商业价值。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载