症状
このコマンドでデプロイしました。今まで特に問題は起きておらず、変化点も特にないはずなのに、急にデプロイできなくなりました。
$ bundle exec cap production deploy
このようなメッセージがでてしまいます。(詳しいエラー文は残っていません、すみません)
virtual memory exhausted
調べてみると、どうもEC2のメモリ不足らしい。
調査
まずは、SSHログインします。
$ ssh アプリ名
Last login: Mon Mar 1 10:59:29 2021 from 122-222-130-5.east.ap.gmo-isp.jp
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
/home/****/.rbenv/libexec/rbenv-init: 行 131: ヒアドキュメント用一時ファイルを作成できません: No space left on device
SSHログイン時にも今までにないメッセージ「ヒアドキュメント用一時ファイルを作成できません: No space left on device」が出ています。
このコマンドで使用状況をみることが出来ます。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 19M 473M 4% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 8.0G 20K 100% /
tmpfs 99M 0 99M 0% /run/user/1001
/dev/xvda1が容量食ってそうです。
無駄なファイル削除
ログを削除していきます。
$ sudo find /var/log/ -type f -name \* -exec cp -f /dev/null {} \;
[sudo] **** のパスワード:
しかし、あまり変化ないようで、いまだ99%使用しています。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 19M 473M 4% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 7.9G 155M 99% /
tmpfs 99M 0 99M 0% /run/user/1001
以下、調査過程を残しておりますが、読み飛ばして頂いて構いません。
次の章の解決できた方法をご覧ください。
$ cd /var
[**** var]$ ls -la
合計 12
drwxr-xr-x 20 root root 280 2月 20 12:23 .
dr-xr-xr-x 18 root root 269 2月 28 11:18 ..
-rw-r--r-- 1 root root 163 1月 26 04:14 .updated
drwxr-xr-x 2 root root 19 1月 26 04:15 account
drwxr-xr-x 2 root root 6 4月 9 2019 adm
drwxr-xr-x 6 root root 63 1月 26 04:15 cache
drwxr-xr-x 3 root root 18 1月 26 04:15 db
drwxr-xr-x 3 root root 18 1月 26 04:15 empty
drwxr-xr-x 2 root root 6 4月 9 2019 games
drwxr-xr-x 2 root root 6 4月 9 2019 gopher
drwxr-xr-x 3 root root 18 1月 26 04:14 kerberos
drwxr-xr-x 34 root root 4096 2月 11 12:01 lib
drwxr-xr-x 2 root root 6 4月 9 2019 local
lrwxrwxrwx 1 root root 11 1月 26 04:14 lock -> ../run/lock
drwxr-xr-x 8 root root 4096 3月 1 07:12 log
lrwxrwxrwx 1 root root 10 1月 26 04:14 mail -> spool/mail
drwxr-xr-x 2 root root 6 4月 9 2019 nis
drwxr-xr-x 2 root root 6 4月 9 2019 opt
drwxr-xr-x 2 root root 6 4月 9 2019 preserve
lrwxrwxrwx 1 root root 6 1月 26 04:14 run -> ../run
drwxr-xr-x 9 root root 97 1月 26 04:15 spool
drwxrwxrwt 5 root root 321 3月 1 07:12 tmp
drwxr-xr-x 3 1000 1000 24 2月 21 13:02 www
drwxr-xr-x 2 root root 6 4月 9 2019 yp
[**** var]$ cd log
[**** log]$ ls -al
合計 76
drwxr-xr-x 8 root root 4096 3月 1 07:12 .
drwxr-xr-x 20 root root 280 2月 20 12:23 ..
drwxr-xr-x 3 root root 17 2月 11 08:19 amazon
drwx------ 2 root root 99 2月 27 13:14 audit
-rw------- 1 root root 0 3月 1 11:41 boot.log
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210222
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210223
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210224
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210225
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210226
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210227
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210228
-rw------- 1 root utmp 1152 3月 1 11:43 btmp
drwxr-xr-x 2 chrony chrony 6 12月 15 21:48 chrony
-rw-r--r-- 1 root root 0 3月 1 11:41 cloud-init-output.log
-rw-r--r-- 1 root root 0 3月 1 11:41 cloud-init.log
-rw------- 1 root root 773 3月 1 11:41 cron
-rw------- 1 root root 0 3月 1 11:41 cron-20210214
-rw------- 1 root root 0 3月 1 11:41 cron-20210221
-rw------- 1 root root 0 3月 1 11:41 cron-20210228
-rw-r--r-- 1 root root 0 3月 1 11:41 dmesg
-rw-r--r-- 1 root root 0 3月 1 11:41 dmesg.old
-rw------- 1 root root 0 3月 1 11:41 grubby
-rw-r--r-- 1 root root 0 3月 1 11:41 grubby_prune_debug
drwxr-sr-x+ 3 root systemd-journal 46 2月 11 08:19 journal
-rw-r--r-- 1 root root 0 3月 1 11:41 lastlog
-rw------- 1 root root 0 3月 1 11:41 maillog
-rw------- 1 root root 0 3月 1 11:41 maillog-20210214
-rw------- 1 root root 0 3月 1 11:41 maillog-20210221
-rw------- 1 root root 0 3月 1 11:41 maillog-20210228
-rw------- 1 root root 47389 3月 1 11:43 messages
-rw------- 1 root root 0 3月 1 11:41 messages-20210214
-rw------- 1 root root 0 3月 1 11:41 messages-20210221
-rw------- 1 root root 0 3月 1 11:41 messages-20210228
-rw-r----- 1 mysql mysql 0 3月 1 11:41 mysqld.log
drwxrwx--- 2 nginx root 4096 2月 28 03:41 nginx
drwxr-xr-x 2 root root 4096 3月 1 00:00 sa
-rw------- 1 root root 7707 3月 1 11:44 secure
-rw------- 1 root root 0 3月 1 11:41 secure-20210214
-rw------- 1 root root 0 3月 1 11:41 secure-20210221
-rw------- 1 root root 0 3月 1 11:41 secure-20210228
-rw------- 1 root root 0 3月 1 11:41 spooler
-rw------- 1 root root 0 3月 1 11:41 spooler-20210214
-rw------- 1 root root 0 3月 1 11:41 spooler-20210221
-rw------- 1 root root 0 3月 1 11:41 spooler-20210228
-rw------- 1 root root 0 3月 1 11:41 tallylog
-rw-rw-r-- 1 root utmp 0 3月 1 11:41 wtmp
-rw------- 1 root root 0 3月 1 11:41 yum.log
[**** log]$ sudo cat messages
[sudo] **** のパスワード:
Mar 1 11:18:01 ip-10-0-0-73 systemd-logind: Removed session 39.
Mar 1 11:18:01 ip-10-0-0-73 systemd: Removed slice User Slice of tomo.
Mar 1 11:18:01 ip-10-0-0-73 systemd: Stopping User Slice of tomo.
Mar 1 11:18:01 ip-10-0-0-73 systemd: Removed slice User Slice of root.
Mar 1 11:18:01 ip-10-0-0-73 systemd: Stopping User Slice of root.
Mar 1 11:18:01 ip-10-0-0-73 rsyslogd: imjournal: fopen() failed for path: '/var/lib/rsyslog/imjournal.state.tmp': No space left on device [v8.24.0-52.amzn2 try http://www.rsyslog.com/e/2013 ]
省略
・
・
・
[**** log]$ sudo rm messages
[**** log]$ ls -la
合計 32
drwxr-xr-x 8 root root 4096 3月 1 11:48 .
drwxr-xr-x 20 root root 280 2月 20 12:23 ..
drwxr-xr-x 3 root root 17 2月 11 08:19 amazon
drwx------ 2 root root 99 2月 27 13:14 audit
-rw------- 1 root root 0 3月 1 11:41 boot.log
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210222
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210223
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210224
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210225
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210226
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210227
-rw------- 1 root root 0 3月 1 11:41 boot.log-20210228
-rw------- 1 root utmp 1152 3月 1 11:43 btmp
drwxr-xr-x 2 chrony chrony 6 12月 15 21:48 chrony
-rw-r--r-- 1 root root 0 3月 1 11:41 cloud-init-output.log
-rw-r--r-- 1 root root 0 3月 1 11:41 cloud-init.log
-rw------- 1 root root 773 3月 1 11:41 cron
-rw------- 1 root root 0 3月 1 11:41 cron-20210214
-rw------- 1 root root 0 3月 1 11:41 cron-20210221
-rw------- 1 root root 0 3月 1 11:41 cron-20210228
-rw-r--r-- 1 root root 0 3月 1 11:41 dmesg
-rw-r--r-- 1 root root 0 3月 1 11:41 dmesg.old
-rw------- 1 root root 0 3月 1 11:41 grubby
-rw-r--r-- 1 root root 0 3月 1 11:41 grubby_prune_debug
drwxr-sr-x+ 3 root systemd-journal 46 2月 11 08:19 journal
-rw-r--r-- 1 root root 0 3月 1 11:41 lastlog
-rw------- 1 root root 0 3月 1 11:41 maillog
-rw------- 1 root root 0 3月 1 11:41 maillog-20210214
-rw------- 1 root root 0 3月 1 11:41 maillog-20210221
-rw------- 1 root root 0 3月 1 11:41 maillog-20210228
-rw------- 1 root root 0 3月 1 11:41 messages-20210214
-rw------- 1 root root 0 3月 1 11:41 messages-20210221
-rw------- 1 root root 0 3月 1 11:41 messages-20210228
-rw-r----- 1 mysql mysql 0 3月 1 11:41 mysqld.log
drwxrwx--- 2 nginx root 4096 2月 28 03:41 nginx
drwxr-xr-x 2 root root 4096 3月 1 00:00 sa
-rw------- 1 root root 8308 3月 1 11:48 secure
-rw------- 1 root root 0 3月 1 11:41 secure-20210214
-rw------- 1 root root 0 3月 1 11:41 secure-20210221
-rw------- 1 root root 0 3月 1 11:41 secure-20210228
-rw------- 1 root root 0 3月 1 11:41 spooler
-rw------- 1 root root 0 3月 1 11:41 spooler-20210214
-rw------- 1 root root 0 3月 1 11:41 spooler-20210221
-rw------- 1 root root 0 3月 1 11:41 spooler-20210228
-rw------- 1 root root 0 3月 1 11:41 tallylog
-rw-rw-r-- 1 root utmp 0 3月 1 11:41 wtmp
-rw------- 1 root root 0 3月 1 11:41 yum.log
[**** log]$ cd
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 19M 473M 4% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 7.9G 155M 99% /
tmpfs 99M 0 99M 0% /run/user/1001
$ df -i
ファイルシス Iノード I使用 I残り I使用% マウント位置
devtmpfs 123170 284 122886 1% /dev
tmpfs 125862 2 125860 1% /dev/shm
tmpfs 125862 359 125503 1% /run
tmpfs 125862 16 125846 1% /sys/fs/cgroup
/dev/xvda1 728624 411840 316784 57% /
tmpfs 125862 1 125861 1% /run/user/1001
$ sudo du -sh
271M .
$ sudo du -sh /*
0 /bin
59M /boot
0 /dev
31M /etc
271M /home
0 /lib
0 /lib64
0 /local
0 /media
0 /mnt
116K /opt
du: `/proc/27513/task/27513/fd/3' にアクセスできません: No such file or directory
du: `/proc/27513/task/27513/fdinfo/3' にアクセスできません: No such file or directory
du: `/proc/27513/fd/3' にアクセスできません: No such file or directory
du: `/proc/27513/fdinfo/3' にアクセスできません: No such file or directory
0 /proc
24K /root
19M /run
0 /sbin
0 /srv
272M /swap
0 /sys
43M /tmp
2.3G /usr
4.7G /var
$ sudo du -sh /var/*
0 /var/account
0 /var/adm
227M /var/cache
0 /var/db
0 /var/empty
0 /var/games
0 /var/gopher
0 /var/kerberos
175M /var/lib
0 /var/local
0 /var/lock
44K /var/log
0 /var/mail
0 /var/nis
0 /var/opt
0 /var/preserve
0 /var/run
16K /var/spool
28K /var/tmp
4.3G /var/www
0 /var/yp
$ sudo du -sh /*
0 /bin
59M /boot
0 /dev
31M /etc
271M /home
0 /lib
0 /lib64
0 /local
0 /media
0 /mnt
116K /opt
du: `/proc/27565/task/27565/fd/3' にアクセスできません: No such file or directory
du: `/proc/27565/task/27565/fdinfo/3' にアクセスできません: No such file or directory
du: `/proc/27565/fd/3' にアクセスできません: No such file or directory
du: `/proc/27565/fdinfo/3' にアクセスできません: No such file or directory
0 /proc
24K /root
19M /run
0 /sbin
0 /srv
272M /swap
0 /sys
43M /tmp
2.3G /usr
^[[A4.7G /var
解決できた方法
$ sudo du -sh /var/www/*
4.3G /var/www/アプリ名
$ sudo du -sh /var/www/アプリ名/*
0 /var/www/アプリ名/current
3.7G /var/www/アプリ名/releases
78M /var/www/アプリ名/repo
8.0K /var/www/アプリ名/revisions.log
612M /var/www/アプリ名/shared
releasesディレクトリの使用量が多そうですね。
# ココだ!!!
$ sudo du -sh /var/www/アプリ名/releases/*
246M /var/www/アプリ名/releases/20210228042850
246M /var/www/アプリ名/releases/20210228043204
246M /var/www/アプリ名/releases/20210228045446
246M /var/www/アプリ名/releases/20210228050040
246M /var/www/アプリ名/releases/20210228052141
247M /var/www/アプリ名/releases/20210228072751
246M /var/www/アプリ名/releases/20210228073303
246M /var/www/アプリ名/releases/20210228073914
238M /var/www/アプリ名/releases/20210228074136
246M /var/www/アプリ名/releases/20210228081218
246M /var/www/アプリ名/releases/20210228110414
246M /var/www/アプリ名/releases/20210228110649
246M /var/www/アプリ名/releases/20210228112045
246M /var/www/アプリ名/releases/20210228112835
76M /var/www/アプリ名/releases/20210301071924
191M /var/www/アプリ名/releases/20210301110116
$ cd /var/www/アプリ名/releases
[**** releases]$ ls -la
合計 68
drwxrwxr-x 18 **** **** 4096 3月 1 11:01 .
drwxr-xr-x 5 **** **** 84 2月 28 05:23 ..
drwxrwxr-x 15 **** **** 4096 2月 28 04:29 20210228042850
drwxrwxr-x 16 **** **** 4096 2月 28 04:33 20210228043204
drwxrwxr-x 16 **** **** 4096 2月 28 04:56 20210228045446
drwxrwxr-x 15 **** **** 4096 2月 28 05:01 20210228050040
drwxrwxr-x 16 **** **** 4096 2月 28 05:22 20210228052141
drwxrwxr-x 15 **** **** 4096 2月 28 07:29 20210228072751
drwxrwxr-x 15 **** **** 4096 2月 28 07:33 20210228073303
drwxrwxr-x 15 **** **** 4096 2月 28 07:39 20210228073914
drwxrwxr-x 15 **** **** 4096 2月 28 07:42 20210228074136
drwxrwxr-x 15 **** **** 4096 2月 28 08:12 20210228081218
drwxrwxr-x 15 **** **** 4096 2月 28 11:04 20210228110414
drwxrwxr-x 15 **** **** 4096 2月 28 11:07 20210228110649
drwxrwxr-x 15 **** **** 4096 2月 28 11:21 20210228112045
drwxrwxr-x 15 **** **** 4096 2月 28 11:29 20210228112835
drwxrwxr-x 15 **** **** 4096 3月 1 07:19 20210301071924
drwxrwxr-x 15 **** **** 4096 3月 1 11:01 20210301110116
新しいもの3つ残し、それ以外は削除していきます。
#とりあえず、一個削除してみる。
[**** releases]$ rm -rf 20210228042850
[**** releases]$ ls -la
合計 60
drwxrwxr-x 17 **** **** 336 3月 1 11:57 .
drwxr-xr-x 5 **** **** 84 2月 28 05:23 ..
drwxrwxr-x 16 **** **** 4096 2月 28 04:33 20210228043204
drwxrwxr-x 16 **** **** 4096 2月 28 04:56 20210228045446
drwxrwxr-x 15 **** **** 4096 2月 28 05:01 20210228050040
drwxrwxr-x 16 **** **** 4096 2月 28 05:22 20210228052141
drwxrwxr-x 15 **** **** 4096 2月 28 07:29 20210228072751
drwxrwxr-x 15 **** **** 4096 2月 28 07:33 20210228073303
drwxrwxr-x 15 **** **** 4096 2月 28 07:39 20210228073914
drwxrwxr-x 15 **** **** 4096 2月 28 07:42 20210228074136
drwxrwxr-x 15 **** **** 4096 2月 28 08:12 20210228081218
drwxrwxr-x 15 **** **** 4096 2月 28 11:04 20210228110414
drwxrwxr-x 15 **** **** 4096 2月 28 11:07 20210228110649
drwxrwxr-x 15 **** **** 4096 2月 28 11:21 20210228112045
drwxrwxr-x 15 **** **** 4096 2月 28 11:29 20210228112835
drwxrwxr-x 15 **** **** 4096 3月 1 07:19 20210301071924
drwxrwxr-x 15 **** **** 4096 3月 1 11:01 20210301110116
うまく削除出来ているようなので、他も削除していきます。
削除後
[**** releases]$ ls -la
合計 8
drwxrwxr-x 4 **** **** 50 3月 1 11:59 .
drwxr-xr-x 5 **** **** 84 2月 28 05:23 ..
drwxrwxr-x 15 **** **** 4096 3月 1 07:19 20210301071924
drwxrwxr-x 15 **** **** 4096 3月 1 11:01 20210301110116
[**** releases]$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 19M 473M 4% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 4.4G 3.7G 55% /
tmpfs 99M 0 99M 0% /run/user/1001
[**** releases]$ df -i
ファイルシス Iノード I使用 I残り I使用% マウント位置
devtmpfs 123170 284 122886 1% /dev
tmpfs 125862 2 125860 1% /dev/shm
tmpfs 125862 359 125503 1% /run
tmpfs 125862 16 125846 1% /sys/fs/cgroup
/dev/xvda1 4193216 155257 4037959 4% /
tmpfs 125862 1 125861 1% /run/user/1001
無事に容量が空き、デプロイできるようになりました。
今後の対策
デプロイの度にreleases出来るファイルは最新の3つまでしか残さない設定に変えます。
下記を、変更もしくは追加してください。
config/deploy.rb
set :keep_releases, 3
これで安心です。