Amazon Web ServicesのEC2で「nano」や「micro」などの低スペックなインスタンスサイズを選択した場合、パッケージのアップデート時、パッチマネージャーからのスキャン時やインストール時にメモリ不足で失敗してしまう事が度々あります。
回避策として有用だったワークアラウンドは以下4点。
1. インスタンスタイプを変更
メモリ容量の大きなインスタンスタイプに変更することで事象を回避できる可能性があります。
実際はコストの関係で気軽にインスタンスサイズを上げることは難しいと思います。
2. スワップ拡張を実施
スワップ拡張を実施することで事象を回避できる可能性があります。
$ sudo dd if=/dev/zero of=/swap.extended bs=1M count=512
$ sudo mkswap /swap.extended
$ sudo chmod 0600 /swap.extended
$ sudo swapon /swap.extended
$ sudo echo '/swap.extended swap swap defaults 0 0' >> /etc/fstab # SWAP拡張を永続化したい場合に実行
3. パッケージ管理ソフトウェアが参照するリポジトリの数を調整
aptやyum、dnfなどのパッケージ管理ソフトウェアで参照するリポジトリの数が多い場合、多くのメモリが必要となりますが、リポジトリの設定数を調整することで事象を回避できる可能性があります。
4. パッケージ管理ソフトウェアの設定変更
利用可能なディストリビューションは限られますが、パッケージ管理ソフトウェアのオプション設定を施すことで事象を回避できる可能性があります。
具体的には「/etc/yum.conf」の設定でasyncオプションをFalseで設定します。
デフォルトでパッケージは並列でダウンロードされるため、asyncオプションをFalseで設定することでメモリの使用量を抑えることが可能です。