EC2にSWAPが無い

EC2で使っているAmazon Linuxはデフォルトだとスワップが無いようです。
t2.microだと1GBのメモリを使ってしまえば、それで終わり。

それを知らずに、デフォルトで使っていたら、EC2のサーバでアラート発生!

アラート発生から、スワップを作成して問題が解決するまでの顛末は、以下のとおりでした


EC2のサーバでアラート発生

ログインしてみる
$ w
-bash: fork: Cannot allocate memory
何にもできない。


すこしして、 /var/log/messeage を確認すると
Out of memory: Kill process 22578 (httpd) score 73 or sacrifice child
Killed process 22578 (httpd) total-vm:475304kB, anon-rss:74056kB, file-rss:340kB
 
メモリ不足? そんなに非力かEC2?
$ free
             total       used       free     shared    buffers     cached
Mem:       1020140     918808     101332          0       2184      18948
-/+ buffers/cache:     897676     122464
Swap:            0          0          0
$ free
             total       used       free     shared    buffers     cached
Mem:       1020140     939688      80452          0       1180      22912
-/+ buffers/cache:     915596     104544
Swap:            0          0          0
 
SWAP足りてない。
$ cat /proc/swaps
Filename                                Type            Size    Used    Priority
 
というか、SWAPが無い (T_T)

SWAPを作る
ddコマンドで、ファイルを作成 ブロックサイズで1KB、2GBのファイルを作る
$ sudo dd if=/dev/zero of=/swapfile bs=1024  count=2097152
2097152+0 records in
2097152+0 records out
2147483648 bytes (2.1 GB) copied, 40.0416 s, 53.6 MB/s
作ったファイルをスワップ・ファイルとして初期化
$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=18932660-868b-4d3b-9f38-19eca6f61366
 
 
スワップ・ファイルへのスワップを有効にする
$ sudo swapon /swapfile
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
危ないよ!と怒られたので、素直にモード変更
$ sudo chmod 600 /swapfile
$ ls -al /swapfile
-rw——- 1 root root 2147483648 Feb 23 01:59 /swapfile
スワップができていることを確認
$ cat /proc/swaps
Filename                                Type            Size    Used    Priority
/swapfile                               file            2097148 48      -1
$ free
             total       used       free     shared    buffers     cached
Mem:       1020140     947048      73092          0       2760      29568
-/+ buffers/cache:     914720     105420
Swap:      2097148         48    2097100
 
再起動時用にfstaba修正
$ sudo vi /etc/fstab
$ cat /etc/fstab
#
LABEL=/     /           ext4    defaults,noatime  1   1
tmpfs       /dev/shm    tmpfs   defaults        0   0
devpts      /dev/pts    devpts  gid=5,mode=620  0   0
sysfs       /sys        sysfs   defaults        0   0
proc        /proc       proc    defaults        0   0
/swapfile    swap       swap    defaults        0   0
 
ディスクの空きも確認
$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/xvda1      10188068 4370460   5717360  44% /
2GBのスワップ作成完了