有没有办法加快AWS CodeDeploy


15

我正在使用AWS CodeDeploy部署站点,但我注意到它的速度并不一致。有时速度相当快,但有时部署的每个步骤可能需要几分钟。当应该快速执行部署时(如果存在错误或中断),这很烦人。

但是,我找不到有关CodeDeploy速度的任何文档,而且似乎也找不到关于慢速或快速的逻辑。有什么方法可以加快速度,有什么方法可以知道花费了这么长时间吗?

Answers:


10

CodeDeploy确实很少在默认情况下-它抓住从S3或Github上的代码,然后运行你的每个脚本appspec.yml文件的指示。

如果您的部署正在从S3中获取千兆字节的数据,您会发现这需要花费一些时间进行数据传输(尤其是在带宽有限的小型EC2实例上),但除此之外,部署延迟很可能是由于您的原因在您的部署脚本中执行。

CodeDeploy部署中的步骤为:

  • ApplicationStop-您控制此钩子
  • DownloadBundle-CodeDeploy从S3 / Github捕获代码
  • BeforeInstall-您可以控制此挂钩
  • 安装-CodeDeploy将代码从临时位置复制到最终目标
  • AfterInstall-您可以控制此挂钩
  • ApplicationStart-您控制此钩子
  • ValidateService-您控制此钩子

粗体部分取决于CodeDeploy,其他部分取决于您。如果您看到粗体显示的延迟有所不同,请联系AWS支持,但是否则您可能需要研究一下钩子。


是的,我自己的脚本既简单又快速。这是“下载”捆绑包步骤,通常需要几分钟才能运行,而且我的项目并不大。通常只需要几秒钟。我没有开发支持计划,并且我不愿意为此付出代价,所以我现在就顺其自然。
贾斯珀·肯尼斯

再次检查,问题必须出在带宽上。我们在登台服务器上使用较小的实例类型,而在生产中使用一次使用较大的实例类型,并且登台总是很慢。
贾斯珀·肯尼斯

@JasperKennis是的,较小的实例类型可能会受到相当有限的带宽限制,特别是如果您所在的主机上邻居很吵。那是有道理的。
ceejayoz

21

BlockTraffic和AllowTraffic

只需调整目标群体的健康检查设置即可节省几分钟。

之前

在此处输入图片说明 在此处输入图片说明

在此处输入图片说明 在此处输入图片说明

说明

之所以有效BlockTrafficAllowTraffic是因为它们都等待成功的健康检查。默认的健康检查间隔是每30秒检查1次,成功的健康检查需要连续5次连续200次响应。因此,默认情况下,它花费的时间超过2分30秒。这适用于每个EC2实例。减少运行状况检查间隔并限制所需的成功检查次数将缩短部署时间。


进行此更改后,我得到了Script at specified location: ... failed to complete in 5 seconds。(在appspec.yml-> hooks:-> BeforeInstall中设置):(请告诉我原因)
Yevgeniy Afanasyev

在安装前配置中是否设置了超时?docs.aws.amazon.com/codedeploy/latest/userguide/...
彼得·陶

谢谢,现在我看到它不相关,而是偶然的。
Yevgeniy Afanasyev

2

另一个要检查的设置是目标组的“注销延迟”。我的健康检查设置已经很低,这是我的情况的瓶颈。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.