【问题标题】:How to determine root cause of AWS Elastic Beanstalk Shutdown Errors如何确定 AWS Elastic Beanstalk 关闭错误的根本原因
【发布时间】:2019-11-21 13:43:54
【问题描述】:

我有一个托管在 AWS Elastic Beanstalk 上的 Django 应用程序。

用户将文档上传到网站。有时,用户上传文件并且服务器完全关闭。服务器立即 500 秒,离线大约 4 分钟,然后神奇地应用程序恢复并运行。

显然,应用程序发生了一些事情,它变得不堪重负。

我从 Elastic Beanstalk 得到的唯一信息是这条消息:

Environment health has transitioned from Ok to Severe. 100.0 % of the requests are failing with HTTP 5xx. ELB processes are not healthy on all instances. ELB health is failing or not available for all instances.

然后大约 4 分钟后:

Environment health has transitioned from Severe to Ok.

我有 1 个 t2.medium EC2 实例。我已将其设置为负载平衡,但使用 Min 1 Max 1,因此我没有利用负载平衡功能。

这是我的健康标签的截图:

如图 1 所示,我的应用在 7 月 10 日关闭。此时我的 CPU 达到峰值,但我无法想象 20% 的 CPU 足以让我的服务器不堪重负。

如何确定可能导致这些短 500 错误的原因?还有其他地方我可以寻找发现它的来源吗?我在 access_log 或 error_log 中看不到任何有用的信息。我不知道从哪里开始寻找。

【问题讨论】:

    标签: django server amazon-elastic-beanstalk


    【解决方案1】:

    在没有使用负载均衡器的情况下,我在使用 Elastic Beanstalk 时遇到了类似的问题。所以当我遇到这个问题时,我的应用程序只是崩溃了,我需要从头开始重建环境。进一步搜索发现问题有时是 EC2 内存超出,这导致弹性 beantalk 关闭。解决方案是添加一个交换区(我更喜欢 2048MB 的交换区)并防止这些突然超出的内存。

    以下是如何将交换区域添加到弹性豆茎实例:

    .ebextensions/swap-area.sh:

    #!/usr/bin/env bash
    
    SWAPFILE=/var/swapfile
    SWAP_MEGABYTES=2048
    
    if [ -f $SWAPFILE ]; then
        echo "$SWAPFILE found, ignoring swap setup..."
        exit;
    fi
    
    /bin/dd if=/dev/zero of=$SWAPFILE bs=1M count=$SWAP_MEGABYTES
    /bin/chmod 600 $SWAPFILE
    /sbin/mkswap $SWAPFILE
    /sbin/swapon $SWAPFILE
    

    .ebextensions/00-swap-area.config:

    container_commands:
      00_swap_area:
        command: "bash .ebextensions/swap-area.sh"
    

    然后部署完成后,您可以在您的EC2中使用top等命令查看交换区。

    【讨论】:

    • 我想我要做的第一件事就是确定它是否是内存超出错误。交换区的意义何在?有一些额外的内存可以在紧急情况下使用吗?难道不是更好的解决方案是试图释放内存,这样你就达不到这一点吗?非常感谢您的回答。
    • 您可以将交换区视为虚拟 RAM。当您的实际内存已满时,非活动内存指针将移动到该虚拟区域,以便您可以继续运行您的应用程序等。当然,您需要尝试优化您的内存消耗,但是一旦超过,交换区域确保您保持您的服务成功。
    猜你喜欢
    • 2020-02-19
    • 2017-01-22
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2015-05-04
    • 2016-11-06
    • 2020-08-31
    相关资源
    最近更新 更多