为什么每次Elastic Beanstalk向其实例发出命令时它总是超时?

ard*_*ard 38 amazon-web-services amazon-elastic-beanstalk

我有一个部署到Amazon Elastic Beanstalk的PHP应用程序.但是我注意到一个问题,每当我通过git aws.push将我的代码更改推送到Elastic Beanstalk时,部署的应用程序都没有获取更改.我检查了我的应用程序Beanstalk环境中的事件日志,并注意到每次Beanstalk发出时:

将新版本部署到实例

它总是紧随其后:

以下实例在允许的命令超时时间内没有响应(它们最终可能仍然自行完成):[i-d5xxxxx]

当我尝试请求快照日志时,会发生同样的事情.Beanstalk问题:

requestEnvironmentInfo正在启动

然后几分钟之后再次出现:

以下实例在允许的命令超时时间内没有响应(它们最终可能仍然自行完成):[i-d5xxxxx].

cho*_*xin 43

我有几次这个问题.它似乎只影响特定的实例.因此可以通过终止EC2实例来解决(通过管理控制台上的EC2页面完成).此后,Elastic Beanstalk将检测到0个正常实例并自动启动新实例.

如果这是一个生产环境,并且您只有一个实例,并且您希望最小的停机时间

  1. 将最小实例配置为2,Beanstalk将为您启动另一个实例.
  2. 通过EC2选项卡终止有问题的实例,Beanstalk将为您启动另一个实例,因为最小实例为2
  3. 将最小实例配置为1,Beanstalk将删除您的两个实例中的一个.

  • 这个问题仍然发生在我身上,我不知道为什么它会偶尔发生.似乎亚马逊没有修复它.我在日志中找不到任何内容为什么会发生这种情况,甚至在我部署之前已成功部署的文件时也会发生这种情况,因此我怀疑这些文件是错误的.任何人都知道为什么会这样? (6认同)
  • 一个简单的重启实例一次为我工作:) (2认同)

dav*_*ode 5

默认情况下,如果您的命令没有及时完成,Elastic Beanstalk会在8分钟(设置中定义480秒)后"抛出超时异常".您可以设置最长30分钟(1800秒)的时间.

{
    "Namespace": "aws:elasticbeanstalk:command",
    "OptionName": "Timeout",
    "Value": "1800"
}
Run Code Online (Sandbox Code Playgroud)

在这里阅读:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html

  • 你把它放在哪里? (5认同)