Ruby:@ rb_sysopen打开的文件过多

File.new(big_file)打开一个文件(没有关闭它)1016次(Ubuntu)或1017次(CentOS)后,似乎有一个限制并且它会引发:

 Too many open files @ rb_sysopen - big_file (Errno::EMFILE) 

有没有办法提高这个限制?

在我的系统上, ulimit设置为unlimited

  • EMFILE在您的进程中打开了太多文件。
  • ENFILE在整个系统中打开的文件太多。

所以Errno::EMFILE是由于ruby进程打开了太多文件。 这个限制可能设置为默认的1024可以看到:

 $ulimit -n 1024 

代替:

 $ulimit unlimited 

您可以使用此方法提高限制。