解决Error: EMFILE: too many open files问题

ulimit 命令。ulimit用于限制shell启动进程所占用的资源,更多命令见百度

问题

程序的log文件中有如下错误:

log4js.fileAppender - Writing to file log_file.log, error happened  { Error: EMFILE: too many  open files, open ‘log_file.log’

大致意思是说有太多的文件已打开,已经不能再打开了。

解决

通过 ulimit -n命令可以查看linux系统里打开文件描述符的最大值,一般缺省值是1024,但是对一台服务器来说,这个值偏小,所以有必要重新设置linux系统里打开文件描述符的最大值。

  1. 这个值可使用 ulimit 命令来修改,如:
ulimit -n 1024000

但上述命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效。

  1. 永久生效需要进行下面设置:
vi /etc/security/limits.conf

追加如下内容:

    * soft nofile 1024000
    * hard nofile 1024000

其中 * 代表所有用户。重新登录,通过ulimit -n或者 ulimit -a 命令查看是否生效

Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注