AWS
EC2
swapon
swap

AWS EC2 (t1.micro) のメモリがいっぱいの人はSwap領域を作成しよう

AWSの脆弱サーバの余ってるHDD領域を有効活用しよう

自分の趣味でやっているwordpressのサイトのメモリがいっぱいになってmySQLがガンガン落ちて全くつながらないのでなんとかした件のまとめ。

ここではAWSのEC2 t1.microという非常に弱い&安いサーバでの運用。

ユーザーの切り替え

[ec2-user@ip-**-134-***-183 ~]$ sudo su
[root@ip-**-134-***-183 ec2-user]#

ec2-userでログインはするものの、rootユーザーに切り替えましょう。
接続後にIP出てたから一部伏せ字。

メモリの容量確認

[root@ip-**-134-***-183 ec2-user]# grep Mem /proc/meminfo
MemTotal:         550440 kB
MemFree:           75476 kB

Swapの容量確認

[root@ip-**-134-***-183 ec2-user]# grep Swap /proc/meminfo
SwapCached:            0 kB
SwapTotal:             0 kB
SwapFree:              0 kB

メモリの利用状況

[root@ip-**-134-***-183 ec2-user]# free
             total       used       free     shared    buffers     cached
Mem:        550440     543724       6716          0      14936     105952
-/+ buffers/cache:     422836     127604
Swap:            0          0          0

メモリのfreeなさすぎワロタw

ディスクの利用状況

[root@ip-**-134-***-183 ec2-user]# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/xvda1            51606140  31917732  19604552  62% /
tmpfs                   275220         0    275220   0% /dev/shm

半分は超えてるけど、使う枠はいっぱいある。。。

そうだ、Swap領域を作ろう

[root@ip-**-134-***-183 ec2-user]# fallocate -l 4G /swapfile

fallocate が楽だった。
dd if=/dev/zero of=/swapfile bs=1G count=512 とかでも良いんですが、なんかオプションいくつもあってよくわからんので調べるの面倒だし、fallocateで作っちゃいました。

[root@ip-**-134-***-183 ec2-user]# chmod 600 /swapfile

rootのみが読み書き。他は除外するpermissionを設定。

[root@ip-**-134-***-183 ec2-user]# mkswap /swapfile
スワップ空間バージョン1を設定します、サイズ = 4194300 KiB
ラベルはありません, UUID=4ee87db1-055a-4864-99ce-c4f96665d300

作った。
UUIDは適当に発行されるけど今回は特に必要としてないのでどうでもよい。

[root@ip-**-134-***-183 ec2-user]# swapon /swapfile
[root@ip-**-134-***-183 ec2-user]# swapon -s
Filename                Type        Size    Used    Priority
/swapfile                               file        4194300 211328  -1

swapon ファイル名でswap領域をアタッチする。
swapon -sで状況を調べて、なにかしら表示がされるはず。 

Swapの容量を再度確認(ちゃんと付いたかな?)

[root@ip-**-134-***-183 ec2-user]# grep Swap /proc/meminfo
SwapCached:         3704 kB
SwapTotal:       4194300 kB
SwapFree:        3987632 kB

最初の方でやったgrep Swapでもいいし、

[root@ip-**-134-***-183 ec2-user]# free
             total       used       free     shared    buffers     cached
Mem:        550440     426864     123576          0      20812      69872
-/+ buffers/cache:     336180     214260
Swap:      4194300     211564    3982736

freeなどで調べてSwapが0じゃないことを確認すればOKです。

余談:Swapの破棄

[root@ip-**-134-***-183 ec2-user]# swapoff /swapfile
[root@ip-**-134-***-183 ec2-user]# rm /swapfile

swapoffして削除するだけ。

結論

強いEC2インスタンスを用意するのがいい。