web-dev-qa-db-ja.com

Angular CLI-ng serve-ノードプロセスからの高いCPU使用率

angularアプリをローカルで実行すると、_ng serve_にリンクされたノードプロセスがCPUコアの100%をはるかに超えて使用するという問題に苦労しています。

私の現在の環境は:

Angular CLI:7.3.10ノード:11.15.0 OS:darwin x64(Mac OS X Catalina 10.15.4)Angular:7.2.16

Mac OSの問題に対してfseventsをインストールするという一般的な解決策があるように見える、これに関する多くの投稿と問題に遭遇しました。

私が試したこと:

  • インストール後、fseventsを再構築するための_node-gyp_のXCodeコマンドラインツールのインストール
  • Angular-cli(1.2.13)でオプションの依存関係として古いバージョンが指定されているため、fsevents(2.1.3)の最新バージョンをインストールします
    • 別のノードバージョンを使用して12.13.0を試し、node_modulesを削除してクリーンインストールを実行しました。最新のfeventsバージョンも再試行しました
    • 関連する場合は、nvmも使用します
    • _npm rebuild_を試しました
    • アプリの1つをAngular 7から9にアップグレードしますが、依存関係をクリーンインストールした後も同じ動作です。fseventsがインストールされていることを確認し、最新バージョンも試します

何を試しても、高いCPU使用率を観察し続けますが、時々300〜400%も上昇しているのを見てきました。

これは私の開発を本当に妨げています、そして私が誰かが私が試すことができるいくつかの明るいアイデアを持っていることを望んでいます。

それができない場合、nodeを完全にアンインストールし、nvmを削除してゼロから始めてみるべきかどうか疑問に思っています。

更新-解決済み

そこで、マシンからnvmnodeを削除し、nodeJS Webサイトから最新の安定したバージョンをインストールする方法を試しました。

これを行っても、アプリを起動するときに違いはありませんでした。

私は、webpackのポーリング動作と、これをオフにするか、ポーリング間隔を増やすオプションについて話している投稿をいくつか見つけました。

_--poll [ms]_が動作しているときにこの頻度を制御するために使用できる_ng serve_ cli引数があることがわかりました。

_--poll 1000_引数を使用すると、2つのアプリが実行され、それぞれが私のCPUの約30%を使用します。だから最近観察しているよりもずっと低いですが、これを下げられるかどうかを確認したかったのです。

_--poll 2000_引数を使用すると、これらのアプリのノードプロセスは約10〜15%しか使用していません。

変更を検出してCPU使用率の急上昇を再コンパイルすると、私はそれを予想してから、これらの低いレベルに戻ります。

したがって、何らかの理由でfseventsが私のマシンに影響を与えていない場合でも、アプリの依存関係が_npm i_の場合はインストールされます。これが異なる場合は、グローバルにインストールしました。

とにかく、なぜこの問題が最初に発生したのか理解できればいいのですが、今は幸せです。

¯\_(ツ)_/¯

8
mindparse

たぶん、Dockerでのホット/ライブのリロードのために、ng serve --Host 0.0.0.0 --poll 1poll値には問題があります。たとえば、2000、 そのような ng serve --Host 0.0.0.0 --poll 2000

これで、(ほぼ)リアルタイムのホット/ライブのリロードが失われますが、CPU /バッテリーが節約され、変更されたコードがアプリによって更新されるまでに2秒の遅延が生じます。

0

私は問題を解決することができたようです:/ node_moduleを削除して再インストールしてください

私がここでアドバイスを見つけたのを助けた私の場合: https://gitmemory.com/issue/angular/angular-cli/14748/501608887

0
Peter Uzek

以下のコマンドを使用してみてください

node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve
0
LogicBlower