webpack 开发服务器导致系统冻结

webpack 开发服务器导致系统冻结

npm start我在反应应用程序中使用时遇到错误。就像这样
ENOSPC system limit for file watcher reached
我更新了我的 npm 和 node 版本,但我仍然遇到这个问题。经过一番研究后,我了解到有一个名为 inotify 的东西可以监视不同的文件,我需要增加其文件监视限制。我
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
在终端中使用此代码来增加文件观察器限制。在此之后,我成功地做到了这一点npm start,并让我的项目在 localhost:3000 中运行,但这极大地减慢了我的系统速度,并且时不时地冻结。我高度怀疑这是由于文件观察者数量的增加造成的。是这样吗,如果是的话我现在该怎么办?

答案1

通知监视系统事件更改,并且通过所做的更改,您将监视比以前更多的文件;监控当然会影响一般系统行为。

如果您确实想“调整”该值,请使用以下命令检查当前用户监视的数量:

lsof | grep inotify | wc -l

之后,只需为该结果设置一个稍大的值即可避免出现问题fs.inotify.max_user_watches;一个可能远小于的值524288这将帮助您消耗更少的资源。

答案2

524288:一个(太大的)神奇数字

正如您可能所做的那样,一旦 IDE 抱怨它,我就按照建议将max_user_watches值设置为高于默认值的数字。
我不知道它从哪里来524288,但在使用它几个月后,我可以肯定地说它会导致问题,即使对于具有大量 RAM 的系统也是如此。

对于正在寻找同一警告消息答案的人:

如果您想更改限制,请逐步进行,不要直接转到 524288 左右。

Webpack 开发服务器优化(不要隐藏问题...修复它!)

开发服务器和热重载的目的是通过在开发过程中查看很有可能更新的文件来节省一些时间。

但是您更改文件夹中的代码有多少次node_modules?可能不多,所以...


devServer: {

...
        watchOptions: {
            ignored: /node_modules/
        },

...

},


使用此选项,开发服务器将仅专注于您真正需要监视的文件,以便从热重载中受益。

如果您需要更改 npm 依赖项,那么最好停止服务器,安装/删除软件包,最后重新启动它。

使用文件观察器检查进程的脚本

有一个有趣的剧本在 GitHub 上,打印所有监视文件的进程及其各自的文件编号。

这是一个生命安全!

intellij-current/plugins/JavaScriptLanguage/jsLanguageServicesIm

我怀疑这是来自 Jetbrains 的 Node.js 代码辅助功能,除了开发服务器监视的约 10k 个文件之外,它还监视着另外 13k 个文件。

祝您的最佳设置搜索顺利! :-)

相关内容