- Contents -
IDCフロンティアの月額500円くらいの仮想サーバーを利用しているわけですが、
メモリが1Gしかないんですよね。
で、Dockerでコンテナとか色々立ち上げてると、MySqlのコンテナ1つだけで100Mくらいもってかれる。
…メモリが足りない!!
もう一段上のプランにしてメモリを増やすのもいいけど、月額1400円とかになっちゃうので、スワップ領域を増やして対応するのが良い。
スワップ領域とは
物理メモリ以外に、HDDなどのディスク領域を仮想メモリとして利用すること。
freeコマンドを、叩くと
現在のメモリ状況が分かる。
初期状態だとスワップ領域はゼロなので、
メモリがなくなるとただただ枯渇して終わるだけ…
$ free -h
total used free shared buff/cache available
Mem: 974M 318M 103M 3.4M 553M 444M
Swap: 0
環境
IDCF Cloud
light.S1 ( 1 CPU x 0.8 GHz / 1GB RAM )
Ubuntu 14.04 (64-bit)
作業手順
スワップ領域作成
# スワップファイル用ディレクトリ作成
sudo mkdir /var/swap/
# 1GBのスワップファイル作成
sudo dd if=/dev/zero of=/var/swap/swap0 bs=1M count=1024
sudo chmod 600 /var/swap/swap0
# swapファイルとして割当
sudo mkswap /var/swap/swap0
sudo swapon /var/swap/swap0
fstabで起動時設定
# 起動時用に追記する
sudo vi /etc/fstab
以下の一行を追記する。
/var/swap/swap0 swap swap defaults 0 0
補足
スワップ用のファイルは何処に作っても良さそうです。
dd
ddコマンドで、指定バイト数のゼロ埋めされたファイルを作成しています。
mkswap
mkswap でスワップ用にファイル属性を変えてるみたい。
swapon
swapon(スワップ オン) で、スワップ領域として登録されます。
この時点で、freeコマンド叩いてみると
スワップ領域ができている事が確認できます。
$ free -h
total used free shared buff/cache available
Mem: 974M 319M 101M 3.4M 554M 443M
Swap: 1.0G 795M 228M
fstab
最後に再起動すると、swaponしてない事になるので、fstabに起動時設定しているわけです。
参考
ddコマンドについて
http://qiita.com/mono_cat/items/4e6b9ef349a0ed291644
fstabについて
http://www.linuxmaster.jp/linux_skill/2013/06/etcfstab.html
おしまい
dockerの利用メモリは以下のとおり
$ docker stats --no-stream
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
d852f70fc84b 0.03% 3.676MiB / 974.9MiB 0.38% 2.07MB / 2.03MB 11.2MB / 418kB 7
acefc4d2a555 0.03% 3.398MiB / 974.9MiB 0.35% 23.9MB / 12.7MB 28.3MB / 20.5kB 11
9862dd2381bd 0.06% 5.379MiB / 974.9MiB 0.55% 833MB / 366MB 16.4MB / 1.02MB 29
1534db63a5bf 0.03% 75MiB / 974.9MiB 7.69% 361MB / 844MB 94.6MB / 1.86GB 52
5d6d726c9398 0.02% 91.49MiB / 974.9MiB 9.38% 3.75MB / 7.51MB 467MB / 8.19kB 3
71d74f4c6e5c 0.02% 2.57MiB / 974.9MiB 0.26% 1.14MB / 2.95MB 93.1MB / 75.2MB 29
これで、月額500円のサーバーでも、
充分なメモリを確保する事ができます。