Angular
で開発している際に「 ng build --prod
」コマンドを利用してソースコードをビルドする必要があるのですが、プロジェクトの規模が大きくなるとメモリ不足になりビルドに失敗してしまうことがあります。
サーバーは AWS
を利用していたので、メモリ不足とのことなので EC2
のインスタンスを順次スケールアップしていたのですが、どれだけスケールアップしてもメモリ不足になる現象が発生したので、その原因と対処法について調査を行いました。
メモリ不足の原因
node
のビルド実行時のメモリ使用量はデフォルトだと「約1.7G」みたいで、これを増やさないとビルド実行時にメモリ不足になってしまいます。
AWS
の EC2
のインスタンスをスケールアップしてビルド成功していた間は、インスタンスのメモリが 0.5G
→ 1.0G
→ 2.0G
のように node
のビルド実行時のデフォルトのメモリ使用量以下のメモリしか開放されていませんでしたが、プロジェクトの規模が大きくなかったのでインスタンスのスケールアップでビルドを成功させることができていたようです。ところがプロジェクトの規模が大きくなるとメモリ使用量の上限以上のメモリがビルド時に必要となり、 1.7G
以上のメモリ領域を確保できるインスタンスになるとどれだけインスタンスをスケールアップしてもビルド実行が失敗してしまっていました。
解決方法
node
の設定を行うことで手動でビルド実行時のメモリ使用量を定義することができます。「 .bashrc
」などのファイルに下記の設定を追加することでメモリ使用量が増やせます。
export NODE_OPTIONS=--max_old_space_size=4096
数値のところは適宜、環境に応じて変更してください。
下記コマンドも忘れずに実行して設定を反映させます。
$ source ~/.bashrc
最後に
もし、 Angular
の開発などでビルド実行時にメモリ不足でビルド失敗しているのであれば、こちらの設定を追加してみてください。
コメント