aptで取得したNginx Unitを利用すると「Memory allocation failed」が発生する on Ubuntu 14.04

aptで取得したNginx Unitを利用すると「Memory allocation failed」が発生する on Ubuntu 14.04 Linux




概要

今年の春に正式リリースされたNginx Unitを試してみたくWebに落ちてる情報を頼りにセットアップしたところMemory allocation failedが発生した。

About — NGINX Unit

事象

こんな感じに設定ファイルを記述し、

{
    "applications": {
        "test": {
            "type": "python 3",
            "processes": 2,
            "path": "/var/www/app1/app/app/",
            "module": "wsgi"
        }
    },

    "listeners": {
        "*:8400": {
            "application": "test"
        }
    }
}

curlを叩きます。

sudo curl -X PUT -d @server_env.json --unix-socket /var/run/control.unit.sock http://localhost/

これを実行すると

{
	"error": "Memory allocation failed."
}

正しく実行される予定が、エラーとなってしまいました。

最初はcurlが原因かと推測しましたが、
どうやら違かったようです。

curlでunix-socketに失敗するのででcurlのアップデートを行った。
curlでunix-socketに失敗するのでcurlのアップデートを行った。
概要Ngix Unitを試していた時の作業です。curl -X PUT -d @server_env.json --unix-socket /var/run/control.unit.sock コマンドを実行するとcur...

原因

簡潔にまとめると、利用していた環境がダメだったようです。

Unitのパッケージは標準の配布形式で配布されているようです。Debian系の基本的なカーネルのバージョンは4.9であり
memfd_create()をサポートしています。

ちなみに、利用しているカーネルのバージョンを確認すると。

$ uname -a
Linux vagrant-ubuntu-trusty-64 3.13.0-149-generic #199-Ubuntu SMP Thu May 17 10:12:50 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

と出てきました。

とりあえず対策として、

  • カーネルのバージョンを上げる
  • ソースからインストール

という選択肢があります。
が、カーネルのバージョンが低いことは他のシステムの構築を構築するときもにも同様の問題が発生する可能性があるので、
ソースからインストールせず、カーネルのバージョンをあげた方が良いのかもしれません。

nginx unit: error: Memory allocation failed. · Issue #111 · nginx/unit
My installation: # dpkg -l |grep unit ii unit 1.0-1~stretch amd64 NGINX Unit ii unit-python3.5 1.0-1~stretch amd64 Python 3.5 module for NGINX Unit My configura...

という夢をみていました。
後日、ちゃんとセットアップした記事を書きます。以上、よろしく。