簡體   English   中英

Angular CLI - ng serve - 節點進程的高 CPU 使用率

[英]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

我嘗試過的事情:

  • 安裝 XCode node-gyp gyp 的命令行工具以在安裝后重建fsevents
  • 安裝最新版本的fsevents (2.1.3),因為舊版本被指定為 angular-cli (1.2.13) 的可選依賴項
  • 使用不同的節點版本,嘗試 12.13.0 並刪除 node_modules 並進行全新安裝。 還再次嘗試了最新的 fevents 版本
    • 萬一它相關我也使用nvm
  • 嘗試過npm rebuild
  • 將我的一個應用程序從 Angular 7 升級到 9,全新安裝依賴項后行為仍然相同,確保安裝了 fsevents 並嘗試最新版本

無論我嘗試什么,我都會一直觀察到高 CPU 使用率,我看到它有時會爬升 300-400%。

這確實阻礙了我的發展,我希望有人可以提出一些我可以嘗試的好主意。

如果失敗了,我想知道我是否應該嘗試完全卸載node ,擺脫nvm並從頭開始。

在Angular開發上下文中; 轉譯/編譯會導致 CPU 峰值。 當這種情況發生得太頻繁時,您的系統就會出現問題。

有一些方法可以稍微減輕疼痛;

  • 完全關閉文件更改檢測/實時重新加載/自動編譯

ng serve --live-reload falseng 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM