应对无服务器计算中的冷启动、扩展性及热点问题
1. 避免冷启动
当常规技术无法解决应用启动时间过长、高延迟影响用户体验的问题时,就需要对无服务器运行时进行调优,以减少冷启动的频率。
1.1 预留实例或突发容量
无服务器运行时在检测到有工作但没有可用实例时会启动新实例,这就会导致冷启动。为避免这种情况,可以确保始终有实例缓冲来处理请求。具体操作如下:
- 要求运行时预留至少能处理 N 个额外请求的缓冲。当请求填满这个缓冲时,新创建的实例会补充突发请求占用的容量。若突发请求数量超过 N,就会出现至少一次冷启动。
- 这种设计被称为预留实例或突发容量,但它存在一定的资源浪费,即使没有流量,也需要保留实例以应对最多 N 个传入请求。不过,随着服务流量的增加,为固定突发容量预留资源的开销会逐渐减小。
1.2 延迟或禁用最后一个实例的关闭
对于低流量服务,可以延迟或禁用应用最后一个实例的关闭。如果请求处理迅速且至少有一个实例可用,少量突发请求可能会排队,但现有实例能在新实例初始化之前处理完工作。在 Knative 中,用户可以进行以下操作:
- 调整 scale-to-zero-pod-retention-period ,这不会完全禁用缩容到零,但会延长最后一个实例关闭前的时间。
- 设置应用实例的最小数量,这将完全禁用缩容到零,对于需要保证低延迟的关键生产应用来说是合适的选择。
1.3 调整请求并发度
对于支持向单个容器交付多个请求的运行时,可以调整单个实例的目标和最大请求并发度。通过将目标并发度大幅降低到最大并发度以下,自动伸缩
超级会员免费看
订阅专栏 解锁全文
953

被折叠的 条评论
为什么被折叠?



