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

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

2018-09-103 min read

目次

  1. 概要
  2. 事象
  3. 原因

概要

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

事象

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

{
  "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が原因かと推測しましたが、

どうやら違かったようです。 https://tech-blog.s-yoshiki.com/2018/09/514/

原因

簡潔にまとめると、利用していた環境がダメだったようです。 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

と出てきました。 とりあえず対策として、

  • カーネルのバージョンを上げる
  • ソースからインストール
という選択肢があります。

が、カーネルのバージョンが低いことは他のシステムの構築を構築するときもにも同様の問題が発生する可能性があるので、

ソースからインストールせず、カーネルのバージョンをあげた方が良いのかもしれません。 https://github.com/nginx/unit/issues/111 という夢をみていました。

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

Author
githubzennqiita
ただの備忘録です。

※外部送信に関する公表事項