错误:EMFILE:打开文件太多,监视,除非我使用sudo

12

描述

最近我遇到了一个问题。我无法在element-web目录中运行yarn start,我得到了这些错误。起初我认为这与element-web本身有关,所以我创建了一个问题。之后一段时间,我尝试在bibviz目录中运行wintersmith preview,并得到了相同的错误。这很奇怪,所以我尝试创建一个Angular项目并运行ng serve,然后再次出现错误。我去查看问题并关闭它,因为它不是一个element-web的问题。我发现已经有另一个问题创建了相同的问题。它已经被turt2live关闭了,说看起来你的系统内存已经用完了。基于此,我尝试关闭大多数后台运行的程序,现在所有命令都可以正常工作。

我确定ng serve过去曾经工作过。

我的电脑有16 GB的RAM,当我使用7/16 GB时,命令就已经失败了。运行命令时,我看不到任何内存峰值。使用sudo运行命令也完全消除了问题。这对我来说毫无意义。

研究引导我到ulimits,但它们似乎没有任何效果。我还安装了watchman,但没有效果。

有人能告诉我我错过了什么吗?

提前感谢您!

信息

我使用的是Debian 11 Bullseye。这是一些有用的命令输出。

作为普通用户:

> uname -a
Linux Simon-s-PC 5.8.0-3-amd64 #1 SMP Debian 5.8.14-1 (2020-10-10) x86_64 GNU/Linux
> sudo sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 524288
> ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-m: resident set size (kbytes)      unlimited
-u: processes                       46482
-n: file descriptors                8192
-l: locked-in-memory size (kbytes)  unlimited
-v: address space (kbytes)          unlimited
-x: file locks                      unlimited
-i: pending signals                 63664
-q: bytes in POSIX msg queues       819200
-e: max nice                        0
-r: max rt priority                 95
-N 15:                              unlimited
> yarn --version
1.22.5

使用sudo su命令:

> sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 524288
> ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-m: resident set size (kbytes)      unlimited
-u: processes                       63664
-n: file descriptors                1024
-l: locked-in-memory size (kbytes)  2043392
-v: address space (kbytes)          unlimited
-x: file locks                      unlimited
-i: pending signals                 63664
-q: bytes in POSIX msg queues       819200
-e: max nice                        0
-r: max rt priority                 0
-N 15:                              unlimited

在Debian 12上的新Vue.js项目遇到了同样的问题。答案中的解决方案非常有帮助。 - undefined
1个回答

36

我认为我找到了一个解决方案:

  • 通过添加以下内容在/etc/sysctl.conf中设置限制:
fs.inotify.max_user_watches=524288
fs.inotify.max_user_instances=512
  • 打开一个新的终端或重新加载sysctl.conf变量

sudo sysctl --system
  • 运行yarn start

  • 现在一切都应该正常工作了,希望如此。如果不起作用,请尝试将限制设置得更高。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接