Выход из Amazon EC2 Electric Fence: сбой mprotect(): невозможно выделить память
При выполнении моей программы внутри экземпляра Amazon EC2 (t2.small, Oregon, Ubuntu 16.04) я получаю сообщение об ошибке
ElectricFence Exiting: mprotect() failed: Cannot allocate memory
Шаги, которые я выполняю после запуска экземпляра:
Установите основные сборки, pip и cmake
sudo apt-get update && sudo apt-get install build-essential python-pip cmake
Установите менеджер пакетов conan
pip install conan
Клонировать хранилище
git clone https://github.com/oyarsa/faptp.git
Перейдите в репозиторий, создайте папку сборки, установите зависимости и запустите cmake
mkdir build && cd build conan install .. -s compiler=gcc -s compiler.libcxx=libstdc++11 --build=missing cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release cmake --build .
После компиляции я возвращаюсь в корневой каталог и пытаюсь запустить программу
cd .. && ./build/bin/faptp
При этом программа выполняется некоторое время, а затем завершается с таким выводом:
SA-ILS
ElectricFence Exiting: mprotect() failed: Cannot allocate memory
SA-ILS выводится из моей программы. Ошибка от ElectricFence - проблема. Я никогда не слышал об этом раньше, и это первый раз, когда я запускаю эту программу в EC2, поэтому я предполагаю, что она как-то связана с этим.
Исходный код находится по адресу https://github.com/oyarsa/faptp, если это поможет.
1 ответ
Вы уверены, что ошибка не в том, что она не может выделить больше памяти?
Экземпляр t2.small имеет 2 ГБ ОЗУ, и по умолчанию подкачка не включена. Так что если вам нужно больше, вы увидите эту ошибку.
Существует простой способ определить, является ли это проблемой с ОС, или вам не хватает памяти: остановите экземпляр, измените его на более крупный тип и перезапустите. T2.large имеет 8 ГБ ОЗУ, и его раскрутка и тестирование обойдутся вам в $0,094, при условии, что вы не оставите его работать больше, чем из-за ошибки. Если это сработает, попробуйте t2.medium, который будет стоить $0,047. (Или, если тратить десять центов слишком дорого, вы можете попробовать начать с t2.medium)