[AWS][Lightsail] Composer update できない時の対処法

ITAWS, Lightsail

AWSのLightsailでメモリが512MBの最小構成の仮想サーバーでLaravelを動かしているのですが、Composerのupdateがメモリ不足でアップデートできませんでした。

その際にSwap領域を確保して、Updateできるようにした時のメモです。

Swap領域の確保にはパーティションを利用する方法とファイルを作成方法があるようですが、今回はComposerの公式通りファイルを作成する方法にしました。

Composer公式サイトの対処法リンク:

https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors

現状確認

free -m

結果

              total        used        free      shared  buff/cache   available
Mem:            479         323          25          17         131         122
Swap:             0           0           0

Swap領域が0です。

dd(dataset definition) コマンドで2GB確保

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=2048

結果

2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 32.535 s, 66.0 MB/s

オプション

 if=/dev/コピー元デバイスファイル : 標準入力の代わりにファイルから読み出す
 of=/var/コピー先デバイスファイル : 標準出力の代わりにファイルへ書き込む
 bs=1M : バイト数(ブロックサイズ)
 count=2048 : 個数

※1MBが2048個で2GB確保してます。

mkswap コマンドで作成したファイルをSwap領域として利用できるようにする

sudo /sbin/mkswap /var/swap.1

結果

mkswap: /var/swap.1: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=xxx

swaponコマンドでSwap領域を有効にする

sudo /sbin/swapon /var/swap.1

Swap領域確認

total        used        free      shared  buff/cache   available
Mem:            479         329           5          17         144         116
Swap:          2047           0        2047

これでComposer update ができました。

無事更新できたので、一旦Swap領域はオフにしておきました。

sudo /sbin/swapoff /var/swap.1

以上になります。

Swap とは

メモリが足りないときにメモリの中身をハードディスクに移す機能のこと。
あるいは
2つのものを交換すること
です。

https://wa3.i-3-i.info/word1718.html

dd コマンドのオプションの詳しい説明

https://www.atmarkit.co.jp/ait/articles/1711/30/news027.html

スポンサーリンク

Posted by nobuhiro harada