EC2で使っているAmazon Linuxはデフォルトだとスワップが無いようです。
t2.microだと1GBのメモリを使ってしまえば、それで終わり。
それを知らずに、デフォルトで使っていたら、EC2のサーバでアラート発生!
アラート発生から、スワップを作成して問題が解決するまでの顛末は、以下のとおりでした
EC2のサーバでアラート発生
ログインしてみる
$ w
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
何にもできない。
すこしして、 /var/log/messeage を確認すると
すこしして、 /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
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
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
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
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
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.
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
危ないよ!と怒られたので、素直にモード変更
$ sudo chmod 600 /swapfile
$ ls -al /swapfile
-rw——- 1 root root 2147483648 Feb 23 01:59 /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
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
$ 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% /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 10188068 4370460 5717360 44% /
2GBのスワップ作成完了