AWS ElasticBeanstalk 定期关闭
Posted
技术标签:
【中文标题】AWS ElasticBeanstalk 定期关闭【英文标题】:AWS ElasticBeanstalk periodically goes down 【发布时间】:2019-04-26 09:15:33 【问题描述】:我最近注意到我在 AWS Elasticbeanstalk 设置中的 laravel 项目表现异常。服务器将在几分钟内关闭。在 t3.small 中,它每 50 分钟下降一次。健康选项卡说内存耗尽或什么的。它会“严重”大约 5-10 分钟,然后在我不做任何事情的情况下恢复。基本上只是整个曲折的监控。在 t3.nano 中,它大约每 5 分钟下降一次。
以下是我所做的一些我怀疑导致的事情
我已重新启用推送器进行广播。该项目之前有一个推送器设置,并且运行良好。但是,我禁用(删除了所有使用它的部分),因为我还不需要它。我重新启用它并出现问题 我使用过 AWS WAF 和 Cloudfront。所以我之前正在研究这两个部分并使用了一些设置,但是,我不记得使用过与我的 EBS 应用程序相关的任何一个。我确实删除了我在 WAF 和 Cloudfront 上添加的所有内容。以下是一些事实:
每当我删除创建 schedule:run 和 queue:work 的容器命令时,它都会变得完全正常。甚至完全“OK”状态 如果我模拟每秒发送数百个请求。 我尝试将其扩展到 3 个实例,结果仍然相同,但是停机时间变慢了 当它关闭时,它会给出一个 503 错误代码 EBS 的设置是在 64 位 Amazon Linux/2.8.4 上运行的 php 7.2 我正在通过每分钟发送 1 条 Pusher 消息来测试作业和队列。它除了发送当前时间之外什么都不做。这是 也是唯一运行的 cronjob。 cronjob 工作正常,我也可以接收 Pusher 消息,但停机期间除外这是我对日志的观察 - 有一个与 Apache 相关的“内部虚拟连接”。记录的时间与发生停机的时间相同。
我已经尝试了日志中的每一个提示,包括在 cronjob 上的不同设置和其他可能的原因。我也试过问我的同行,但以前没有人遇到过这样的错误。事实上,他们测试了我的 cronjob,它对他们来说工作正常。
我在 /var/log/httpd/error_log 中也有这个错误
[Fri Nov 23 19:07:35.208657 2018] [suexec:notice] [pid 3142] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Nov 23 19:07:35.228633 2018] [http2:warn] [pid 3142] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.
[Fri Nov 23 19:07:35.228644 2018] [http2:warn] [pid 3142] AH02951: mod_ssl does not seem to be enabled
[Fri Nov 23 19:07:35.229188 2018] [lbmethod_heartbeat:notice] [pid 3142] AH02282: No slotmem from mod_heartmonitor
[Fri Nov 23 19:07:35.267841 2018] [mpm_prefork:notice] [pid 3142] AH00163: Apache/2.4.34 (Amazon) configured -- resuming normal operations
[Fri Nov 23 19:07:35.267860 2018] [core:notice] [pid 3142] AH00094: Command line: '/usr/sbin/httpd -D FOR
【问题讨论】:
【参考方案1】:这是一个意外的 CPU 积分和 t2/t3.* EC2 实例的节流限制的案例。 1 个 CPU 积分允许 (t2/t3) 实例以 100% CPU 运行 1 分钟。所有 t2/t3.* 实例 CPU 积分都以每小时固定的速率为正在运行的实例补充(此速率取决于实例类)。因此,长时间的负载(超过某个阈值)将逐渐耗尽这些信用,导致您在上面描述的状态。
建议使用更高层级的实例(m3.medium 及更高版本)来持续维持生产工作负载。在多个实例前面放置负载均衡器也是保持可用性的好方法。
更多信息可以在这里找到:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html
【讨论】:
以上是关于AWS ElasticBeanstalk 定期关闭的主要内容,如果未能解决你的问题,请参考以下文章
Aws Elasticbeanstalk cron.yaml 工作人员问题
aws elasticbeanstalk:无法通过 eb cli 部署到工作环境
AWS::ElasticBeanstalk::ConfigurationTemplate 的 AWS CloudFormation 模板失败