Help us understand the problem. What is going on with this article?

多数ゲストOS上のrails serverでToo many open filesエラーが出たときの対処

More than 3 years have passed since last update.

ホスト上に、仮想化などして多数のRails Serverを起動しようとすると、以下のようなエラーがでることがある。

# rails s

/root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rb-inotify-0.9.8/lib/rb-inotify/notifier.rb:58:in `initialize': Too many open files - Failed to initialize inotify: the user limit on the total number of inotify instances has been reached. (Errno::EMFILE)
    from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/listen-3.0.8/lib/listen/adapter/linux.rb:31:in `new'
    from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/listen-3.0.8/lib/listen/adapter/linux.rb:31:in `_configure'
    (以下略)

/rb-inotify/notifier.rb で上限以上のファイルを開いているということなので、上限の設定を変更する。
例えば

# cat /proc/sys/fs/inotify/max_user_instances
128

とかだとしたら、

# echo 256 > /proc/sys/fs/inotify/max_user_instances

などとしてみる。

これでrails sを試して、成功したらいちいち上記の変更を行わずに済むように/etc/sysctl.confに以下を追記する。

# echo fs.inotify.max_user_instances = 256 >> /etc/sysctl.conf
tachibanayu24
最近はTypeScriptとRubyとReactが多め
https://twitter.com/tachibanayu24
metaps
メタップスは「テクノロジーでお金と経済のあり方を変える」というミッションのもと、テクノロジーをフル活用することで人々を現実世界における様々な制約から解放し、世界中の誰もが自由に価値創造できる社会を目指しています。
https://metaps.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away