![](/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.