物理メモリが足りない時はスワップメモリを使おう。(Ubuntu)

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円のサーバーでも、
充分なメモリを確保する事ができます。

コメントを残す