Posted at

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インスタンスを用意するのがいい。