Misskey: Terser Webpack Plugin 4 を使う

Created on 2 Dec 2020  ·  10Comments  ·  Source: syuilo/misskey

⚙️Server 🐢Performance

Most helpful comment

4と5で何が違うのか把握してからだな

terser-webpack-pluginはterserを呼び出すプラグインであくまでも最適化エンジンはterserなので
terser-webpack-plugin4と5で最適化の内容は変わらないと思います。

では、terser-webpack-plugin4と5はなにが違うかと言うとperformance improvementと言われています。
しかし、実際に速くなっているかと言うと微妙で、ヒープメモリの使用量が使用量が多くなっており環境によってはコケる確率が高くなっていて、さらにスワップの発生によって逆に遅くなっていると思われます。

リッチなデスクトップ開発環境のように8コアとか16GBあるような環境なら恩恵が受けられるのかもしれませんが、
そもそもdevelopmentではJSの最適化を行わないので微妙な気がします。

Dockerイメージの生成に使っているCircleCI環境ではどうかと言われると
CircleCIのFreeはおそらく 2vCPU / 4GB あたりと思われるため (ここの2vCPUは物理CPUの1コア2スレッド分を割り当てと推測)
並列化の恩恵は程遠いと思われ逆にメモリが厳しめの環境に属すると思います。

個人的には絶対terser-webpack-plugin 5じゃないと出来ないことがない限り4でいいのではないかという印象です。

All 10 comments

4と5で何が違うのか把握してからだな

4と5で何が違うのか把握してからだな

terser-webpack-pluginはterserを呼び出すプラグインであくまでも最適化エンジンはterserなので
terser-webpack-plugin4と5で最適化の内容は変わらないと思います。

では、terser-webpack-plugin4と5はなにが違うかと言うとperformance improvementと言われています。
しかし、実際に速くなっているかと言うと微妙で、ヒープメモリの使用量が使用量が多くなっており環境によってはコケる確率が高くなっていて、さらにスワップの発生によって逆に遅くなっていると思われます。

リッチなデスクトップ開発環境のように8コアとか16GBあるような環境なら恩恵が受けられるのかもしれませんが、
そもそもdevelopmentではJSの最適化を行わないので微妙な気がします。

Dockerイメージの生成に使っているCircleCI環境ではどうかと言われると
CircleCIのFreeはおそらく 2vCPU / 4GB あたりと思われるため (ここの2vCPUは物理CPUの1コア2スレッド分を割り当てと推測)
並列化の恩恵は程遠いと思われ逆にメモリが厳しめの環境に属すると思います。

個人的には絶対terser-webpack-plugin 5じゃないと出来ないことがない限り4でいいのではないかという印象です。

なるほどなるほど👀
詳細にありがとうございます

これ導入してみたけど改善していないどころか悪化しているんですが...

これ導入してみたけど改善していないどころか悪化しているんですが...

ソース

@mei23
実行した版のコミット: https://github.com/Groundpolis/Groundpolis/commit/edf976bc142a1b833e3498dfde1b425245eed7a3
マージしたコミット: https://github.com/Groundpolis/Groundpolis/commit/92bc613653209f70daf1ba7f04dad225641089fd

実行環境

|||
|---|---|
|RAM|1GB|
|スワップ|1.5GB|
|node options|--max-old-space-size=2048|

@Xeltica
おそらく4.xにして解決するのは、ヒープ使用量が減って--max-old-space-size=2048がいらなくなるかもという点
既にparallel: 1まで入れていて重い環境なら効果が薄いのかも
ヒープが減っても後はどれだけスワップが速いかになるから、ディスクIOとかが原因で元から遅い環境ではあまり変わらないのかも

そういえば具体的に何が起こるのかを書きそびれていました

時間がかかるならまだしも、Terserが起動したあたりでKilledと表示されて強制終了してしまう感じです。他鯖の管理者からの報告によれば、メモリ2GBの環境でも起こってしまっているようです

@Xeltica
image

12.x は前は heap out of memory が出てたけど今は大丈夫みたい
でも、terser-webpack-plugin 4.x with parallel=1 の方が速かったよ

Groundpolis は依然として heap out of memory が出ちゃうよ
また、terser-webpack-plugin 4.x を入れても変わらないよ

Groundpolisサイドの問題ですか...検証ありがとうございます&大変失礼しました

Was this page helpful?
0 / 5 - 0 ratings