![](/img/trans.png)
[英]High CPU usage from Node.js when running vue-cli-service serve
[英]Angular CLI - ng serve - high cpu usage from node process
我正在努力解决一个问题,即在本地运行任何 angular 应用程序时,链接到ng serve
的节点进程使用了我 100% 以上的 CPU 内核。
我目前的环境是:
Angular CLI:7.3.10 节点:11.15.0 操作系统:darwin x64 (Mac OS X Catalina 10.15.4) Angular:7.2.16
我遇到过很多关于此的帖子和问题,其中常见的解决方案似乎是为 Mac OS 问题安装fsevents
。
我尝试过的事情:
node-gyp
gyp 的命令行工具以在安装后重建fsevents
fsevents
(2.1.3),因为旧版本被指定为 angular-cli (1.2.13) 的可选依赖项nvm
npm rebuild
无论我尝试什么,我都会一直观察到高 CPU 使用率,我看到它有时会爬升 300-400%。
这确实阻碍了我的发展,我希望有人可以提出一些我可以尝试的好主意。
如果失败了,我想知道我是否应该尝试完全卸载node
,摆脱nvm
并从头开始。
在Angular开发上下文中; 转译/编译会导致 CPU 峰值。 当这种情况发生得太频繁时,您的系统就会出现问题。
有一些方法可以稍微减轻疼痛;
ng serve --live-reload false
或ng serve --no-live-reload
等,具体取决于您的 Angular CLI 版本
npm install fsevents
npm rebuild fsevents
npm serve
ng serve --poll [ms]
CPU管理很棘手,这个问题可能有很多原因。 这些只是与 Angular 开发密切相关的几种可能性。 我希望这个答案提供了一些选项来尝试那些有同样问题的人。
也许您对Docker
的热/实时重新加载有类似的设置,例如ng serve --host 0.0.0.0 --poll 1
。 poll
值有问题,将其更改为更大的值,例如2000
,这样ng serve --host 0.0.0.0 --poll 2000
。
现在,您将失去(几乎)实时热/实时重新加载,但您将节省 CPU/电池并在您的应用程序刷新更改的代码之前有 2 秒的延迟。
看来我设法解决了问题:删除 /node_module 并重新安装
就我而言,这有助于我在这里找到建议:https://gitmemory.com/issue/angular/angular-cli/14748/501608887
经过大量挖掘,我发现以下选项对我来说很有效。 在此之前,我每次遇到 JavaScript 堆出 memory 问题。 尝试使用自定义节点 memory,但注意对我有用,而不是低于一个。
ng serve --source-map=false
和
ng build --source-map=false
奇迹般有效。
如果您使用 Yarn 安装软件包,它的锁定文件可能已锁定在旧版本的fsevents
中,该版本已知在 Apple Silicon 上存在node-pre-gyp
gyp 问题。
https://github.com/nodejs/node-gyp/issues/2296
只需删除yarn.lock
并再次运行yarn
,应该会尝试安装不存在该问题的fsevents
依赖项的较新版本。
这适用于 Angular 11。
设置标志--watch=false
将我的 angular 进程的 CPU 使用率从 50% 降低到 0%:
ng serve --configuration=dev --watch=false
尝试使用以下命令
node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.