0

在 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. 安装柯南包管理器

    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

在执行此操作时,程序会执行一段时间,然后以以下输出退出:

SA-ILS

ElectricFence Exiting: mprotect() failed: Cannot allocate memory

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

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

4

1 回答 1

1

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

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

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

于 2016-12-23T01:53:02.293 回答