【问题标题】:Amazon EC2 boot timeAmazon EC2 启动时间
【发布时间】:2015-12-26 18:23:42
【问题描述】:

我们的网络应用会针对用户发起的操作执行随机数量的任务。我们构建了一个小型系统,其中主服务器计算完成任务所需的工作服务器数量,并且相同数量的 EC2 实例“开启”,它们会接收任务并执行相同的操作。

“已打开”,因为从 AMI 跨越一个实例所花费的时间非常长。所以这个想法是拥有一个工作实例池,并根据需要启动和停止它们。

还要考虑亚马逊在您启动实例时的收费方式(每次启动实例时您需要支付 1 小时的费用)。生成的工人将活跃一个小时,并在此期间接受其他任务。

我们已经设法让这个架构启动并运行,但是启动时间仍然困扰着我们,因为它在 40 到 80 秒之间波动。有什么办法可以减少相同的。

下面是worker实例上运行的东西的堆栈信息

  • Ubuntu AMI
  • Node JS(使用永久服务在启动时自动启动)
  • Docker(任务在单个 Docker 容器中执行)

【问题讨论】:

  • 您如何定义“启动时间”?是 AWS 实际生成所包含的实例所花费的时间,还是这是对某些可能更具确定性的度量,例如实例开始响应 ping 和所有服务准备好请求的时间之间的时间?
  • 由于服务器已经生成,我所指的启动时间不包括相同的时间。为了进一步简化,我指的是 AWS api 调用启动“关机”服务器和 node.js 开始运行之间的时间。
  • 我怀疑一个有用的衡量指标是“首次 ping 的时间”以及从那里到服务可用性的变化,因为后者可能很小,而前者可能在很大程度上超出您的控制范围。如果我说的很明显,请原谅我,但是当一个实例“停止”时,分配给它的物理主机资源会在操作系统关闭后释放——它不仅仅是停止在原地,准备重新启动。每次启动时都会将其分配给新的物理主机,因此与 EC2 控制平面的响应能力相关的重启时间可能会发生变化。

标签: node.js ubuntu amazon-web-services amazon-ec2 docker


【解决方案1】:

您看过 AWS lambda 吗? (https://aws.amazon.com/lambda)。

Lambda 支持 node.js 并将根据请求的数量自动管理所需工作人员基础设施的扩展。这将避免您的“一小时账单”问题。您只需为使用的处理时间付费。

【讨论】:

  • 谢谢你的建议,我有机会看看 lambda。我不确定它是否可以处理启动自定义 docker 容器的复杂过程。
猜你喜欢
  • 2011-11-12
  • 1970-01-01
  • 2013-05-30
  • 2011-07-15
  • 2012-06-27
  • 1970-01-01
  • 2017-05-11
  • 2022-06-18
  • 2016-06-18
相关资源
最近更新 更多