0
0

More than 3 years have passed since last update.

【Rails】Capistranoでvirtual memory exhaustedと言われて、デプロイ出来なくなった

Last updated at Posted at 2021-03-16

症状

このコマンドでデプロイしました。今まで特に問題は起きておらず、変化点も特にないはずなのに、急にデプロイできなくなりました。

$ 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

これで安心です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0