目前发现使用 code-server 以及 npm 发现,经常会出现“’xxx unable to watch for file changes in this large workspace’ (error ENOSPC)”、“外部文件更改同步可能很慢”、“当前的 inotify(7) 监视限制太低” 等问题。

原因

系统参数 fs.inotify.max_user_watches 设置值低,限制了每个用户所能创建的 inotify 实例的数量。每个实例可以监视一个或多个文件或目录。当数量超过此限制时,新的监视请求将被拒绝。

Linux 通过 fs.inotify.max_user_watches 参数限制内核中 inotify 子系统的观察者数量。 inotify 是一种文件系统监控机制,它可以用于检测文件或目录的变化,并在事件发生时通知相关的应用程序。

1
2
# 查看 `fs.inotify.max_user_watches` 参数值
sysctl fs.inotify.max_user_watches

解决

需要使用 管理员权限 进行修改!

docker 内修改失败,显示没有权限修改时,需要到宿主机内用管理权限执行以下内容。

  1. 临时修改

    1
    sudo sysctl fs.inotify.max_user_watches=524288
  2. 永久修改

    1
    echo "fs.inotify.max_user_watches=524288" >> /etc/sysctl.conf && sysctl -p

如需要排查具体出现这种情况的原因,可以参考 inotify watch 耗尽