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
の開発などでビルド実行時にメモリ不足でビルド失敗しているのであれば、こちらの設定を追加してみてください。
コメント