2016-12-23 33 views
0

當執行Amazon EC2實例在我的節目(t2.small,俄勒岡州,Ubuntu的16.04),我得到的錯誤Amazon EC2的電子圍欄退出:mprotect()對失敗:無法分配內存

ElectricFence Exiting: mprotect() failed: Cannot allocate memory 

步驟啓動實例之後,我跟隨有:

  1. 安裝建立要領,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. 光盤放入回購,創建build文件夾,安裝依賴和運行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,如果有幫助。

回答

1

你確定錯誤不是因爲,它不能分配更多的內存嗎?

一個t2.small實例有2GB的RAM,默認情況下swap不啓用。所以如果你需要更多的東西,你會看到那個錯誤。

有一種簡單的方法可以確定它是否是操作系統的問題,或者實際內存不足:停止實例,將其更改爲更大的實例類型,然後重新啓動它。 t2.large擁有8GB的內存,如果你不讓它運行超過一個錯誤,那麼要啓動一個並測試它將花費你0.094美元。如果可行,那麼試試t2.medium,這將花費0.047美元來嘗試。 (或者,如果浪費一角錢太貴,你可以嘗試從t2.medium開始)

+0

我試過了,問題依然存在。這個電子圍欄庫是OpenSSL的依賴(它是libcurl的依賴項,它是cpr的依賴項),雖然有一種方法可以禁用它,但我不知道如何在此依賴關係鏈中執行此操作。 我最初認爲這將是由於AWS內部的一些限制,但我只是在VM上測試了這一點,結果是一樣的。我將刪除CPR依賴項(應該很輕微),然後重試。 –

+0

刪除心肺復甦術(因此電柵欄),它工作正常。我想明白爲什麼我會遇到這些問題,但是...... –