[Angular]ビルド時にメモリ不足になる場合の対処法

Angular で開発している際に「 ng build --prod 」コマンドを利用してソースコードをビルドする必要があるのですが、プロジェクトの規模が大きくなるとメモリ不足になりビルドに失敗してしまうことがあります。
サーバーは AWS を利用していたので、メモリ不足とのことなので EC2 のインスタンスを順次スケールアップしていたのですが、どれだけスケールアップしてもメモリ不足になる現象が発生したので、その原因と対処法について調査を行いました。

メモリ不足の原因

node のビルド実行時のメモリ使用量はデフォルトだと「約1.7G」みたいで、これを増やさないとビルド実行時にメモリ不足になってしまいます。

AWSEC2 のインスタンスをスケールアップしてビルド成功していた間は、インスタンスのメモリが 0.5G1.0G2.0G のように node のビルド実行時のデフォルトのメモリ使用量以下のメモリしか開放されていませんでしたが、プロジェクトの規模が大きくなかったのでインスタンスのスケールアップでビルドを成功させることができていたようです。ところがプロジェクトの規模が大きくなるとメモリ使用量の上限以上のメモリがビルド時に必要となり、 1.7G 以上のメモリ領域を確保できるインスタンスになるとどれだけインスタンスをスケールアップしてもビルド実行が失敗してしまっていました。

解決方法

node の設定を行うことで手動でビルド実行時のメモリ使用量を定義することができます。「 .bashrc 」などのファイルに下記の設定を追加することでメモリ使用量が増やせます。

export NODE_OPTIONS=--max_old_space_size=4096

数値のところは適宜、環境に応じて変更してください。

下記コマンドも忘れずに実行して設定を反映させます。

$ source ~/.bashrc

最後に

もし、 Angular の開発などでビルド実行時にメモリ不足でビルド失敗しているのであれば、こちらの設定を追加してみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です