Amazon EC2电围栏退出:mprotect()失败:无法分配内存

时间:2016-12-23 01:00:19

标签: amazon-web-services ubuntu amazon-ec2 electric-fence

在Amazon EC2实例(t2.small,Oregon,Ubuntu 16.04)中执行我的程序时,出现错误

ElectricFence Exiting: mprotect() failed: Cannot allocate memory

启动实例后我遵循的步骤是:

  1. 安装build-essentials,pip和cmake

    sudo apt-get update && sudo apt-get install build-essential python-pip cmake

  2. 安装conan软件包管理器

    pip install conan

  3. 克隆存储库

    git clone https://github.com/oyarsa/faptp.git

  4. 将cd转换为repo,创建构建文件夹,安装依赖项并运行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 .

  5. 编译完成后,我回到根目录并尝试运行程序

    cd .. && ./build/bin/faptp

  6. 执行此操作时,程序会执行一段时间,然后使用此输出退出:

    SA-ILS
    
    ElectricFence Exiting: mprotect() failed: Cannot allocate memory
    

    SA-ILS从我的程序输出。 ElectricFence的错误就是问题所在。我之前从未听说过,这是我第一次在EC2中运行这个程序,所以我认为它与它有关。

    源代码位于https://github.com/oyarsa/faptp,如果有帮助的话。

1 个答案:

答案 0 :(得分:1)

您确定错误不是因为它不能分配更多内存吗?

t2.small实例有2GB的RAM,默认情况下不启用swap。因此,如果您需要更多,那么您将会看到该错误。

有一种简单的方法可以确定操作系统是否存在问题,或者实际上是否内存不足:停止实例,将其更改为更大的实例类型,然后重新启动它。一个t2.large拥有8GB的内存,如果你不让它运行超过一个错误就可以花费0.094美元。如果有效,那么试试t2.medium,试用费用为0.047美元。 (或者,如果浪费一分钱太贵,你可以尝试从t2.medium开始)