Как определить основную причину ошибок завершения работы AWS Elastic Beanstalk - PullRequest
0 голосов
/ 11 июля 2019

У меня есть приложение Django, размещенное на AWS Elastic Beanstalk.

Пользователи загружают документы на сайт. Иногда пользователи загружают документы, и сервер полностью выключается. Сервер мгновенно получает 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. Я настроил его как Балансировку нагрузки, но использую Минимум 1 Макс. 1, поэтому я не пользуюсь функциями балансировки нагрузки.

Вот скриншот моей вкладки здоровья: Screenshot of Health tab

Мое приложение отключилось 7/10, как видно на рисунке 1. В это время мой процессор заработал, но я не могу представить, что 20% ЦП было достаточно, чтобы перегружать мой сервер.

Как я могу определить, что может быть причиной этих коротких 500 ошибок? Где-нибудь еще я могу найти источник этого? Я не вижу ничего полезного в моем access_log или error_log. Я не знаю, с чего начать.

1 Ответ

0 голосов
/ 12 июля 2019

У меня были похожие проблемы с Elastic Beanstalk без использования балансировщика нагрузки. Поэтому, когда я столкнулся с этой проблемой, мое приложение просто зависало, и мне нужно было восстановить среду с нуля. Дальнейший поиск показал, что проблема в том, что иногда память EC2 превышала, что приводило к отключению эластичного бобового стебля. Решением было добавление области подкачки (я предпочел 2048 МБ подкачки) и предотвращение превышения этой внезапной памяти.

Вот как добавить область подкачки к экземпляру эластичного бобового стебля:

.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-своп-area.config:

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

Затем после развертывания вы можете проверить область подкачки, используя такие команды, как top и т. Д. В EC2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...