弹性beantalk部署时间超过超时时间,我如何增加超时时间

Posted

技术标签:

【中文标题】弹性beantalk部署时间超过超时时间,我如何增加超时时间【英文标题】:Elastic beanstalk deployment taking longer than timeout period, how do I increase timeout period 【发布时间】:2014-10-22 20:26:05 【问题描述】:

使用 AWS 网站为应用程序部署新环境的 Elastic beanstalk 警告

Create environment operation is complete, but with command timeouts. Try increasing the timeout period

虽然它最终将环境显示为绿色,但尝试连接到 url 只是给出了

Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. 

该应用程序的早期版本运行良好,但在 ebextensions 中它必须从 s3 复制一个大文件然后解压缩,这需要相当长的时间。该应用程序的早期版本只需要复制一个 3GB 的文件,但新版本必须复制一个 6GB 的文件,而且我看不到其他错误我猜这导致超时并阻止了 tomcat 启动。

但是如何增加超时,我看不到我应该在哪里做呢?

【问题讨论】:

【参考方案1】:

您可以使用选项设置来做到这一点。可以使用 ebextensions 指定选项设置。

在您的应用程序源代码中的一个名为.ebextensions 的目录中创建一个文件。假设文件是​​.ebextensions/01-increase-timeout.config

文件的内容应该是:

option_settings:
    - namespace: aws:elasticbeanstalk:command
      option_name: Timeout
      value: 1000

请注意,此文件为 YAML 格式。 在此之后,您可以使用此版本的源代码更新您的环境。

来自此选项设置的文档:

超时:等待实例完成的秒数 执行命令。

例如,如果源代码部署任务在您达到配置的超时期限时仍在运行,AWS Elastic Beanstalk 显示以下错误:“某些实例尚未响应 命令。未收到来自 的回复。” 您可以 增加 AWS Elastic Beanstalk 服务的时间量 等待您的源代码成功部署到实例。

您可以阅读更多关于 ebextensions here 的信息。有关选项设置的文档可在 here 获得。

【讨论】:

很好,修复了它,FWIW 我最初将值设置为 2000,但允许的最大值是 1800(1/2 小时),没关系,因为在我使用的实例上部署只需要 11 分钟但令人惊讶的是最大值如此之低。 我从 aws 得到 yaml 语法错误,然后我删除了空格(yaml 验证器指示我):option_name:Timeout 和 value:1000(“:”后没有空格)。现在它的效果很好。谢谢! 不要听从@dang 的建议!您需要在 value: 和 number 之间留一个空格。正确的是:value: 1000。不是value:1000 @Roman 你不需要粗鲁。它对我来说没有成功,所以我删除了它们,现在对我来说没问题。我没有什么建议,只是指出我遇到的一些问题,如果他们遇到同样的问题,它可能会对其他人有所帮助。 我需要在项目的某处添加此文件的引用吗?我收到“错误:操作超时。环境状态未知。可以使用 --timeout 选项设置超时。”【参考方案2】:

根据official documentation,您可以将--timeout 选项传递给您的eb create 调用。

--timeout minutes
Set number of minutes before the command times out.

【讨论】:

你确定这是同一个超时吗?或者这是 eb-cli 本身的超时?我的 eb cli 以 ERROR: TimeoutError - The EB CLI timed out after 10 minute(s). The operation might still be running. To keep viewing events, run 'eb events -f'. To set timeout duration, use '--timeout MINUTES'. 超时,而部署本身继续运行,而在“事件”页面上没有显示任何超时错误。【参考方案3】:

使用:--超时

例如:eb create -db --timeout 20

这将为您提供 20 分钟的超时限制。

【讨论】:

【参考方案4】:

我在为我的环境进行部署时一直在这样做,它也可以正常工作。

eb deploy production-env --timeout 30

..这给了我 30 分钟。

【讨论】:

以上是关于弹性beantalk部署时间超过超时时间,我如何增加超时时间的主要内容,如果未能解决你的问题,请参考以下文章

在弹性beantalk中运行sidekiq时Redis连接超时错误

为啥AWS弹性beantalk滚动版本更新仍然有503s的2分钟停机时间?

在 AWS 弹性 beantalk 上部署 Flask 应用程序

我已经在弹性 beantalk 上部署了一个 API,并且可以在其 VPC 中访问它,我如何使它可以公开访问?

如何在自动缩放的弹性 beantalk 实例中更新文件

将 django docker 容器部署到弹性 beantalk