ホスト上に、仮想化などして多数の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