メモ > サーバ > 構築: 基本設定 > スワップ領域を設定
スワップ領域を設定
※メモリ不足の際に、ハードディスクの一部をメモリとして扱えるようにする。
※スワップ領域がない場合、メモリ不足になるとOOM Killerによって早々にプロセスを終了させられる。
スワップ領域がある場合、メモリ不足になるとスワップが使われるため、プロセスの強制終了が発生しにくくなる。
ただしハードディスクの読み書きはメモリに比べて遅いので、処理速度は大幅に落ちる。
可能なら十分な量の実メモリを搭載することが望ましいが、保険として設定しておくといい。
※スワップ領域が割り当てられていない場合に設定するといい。(AWSのEC2など。)
※AWSのECはデフォルトでスワップ領域を割り当てられていないが、これはインスタンスによってメモリサイズが異なるためらしい。
※スワップのサイズは、一般的にメモリサイズの2倍が設定される。
もしくは「いったん2GBを設定して様子を見る」でもいいかもしれない。
スワップは、設定した分だけストレージの容量を消費するので注意。
Amazon EC2(Linux)のswap領域ベストプラクティス
http://dev.classmethod.jp/cloud/ec2linux-swap-bestpractice/
AWS Amazon Linux スワップファイル作成によりSwap領域のサイズを増やす
http://qiita.com/na0AaooQ/items/278a11ed905995bd16af
EC2 Amazon Linux を立ち上げた時にする初期設定
http://qiita.com/shojimotio/items/79264678e9ea10b6fd19
AWSのEC2にはSWAPメモリがない | マリンロード
https://www.marineroad.com/staff-blog/24546.html
■スワップ領域を確認
# free … swap領域を確認。
total used free shared buffers cached
Mem: 1017260 137336 879924 60 9192 76784
-/+ buffers/cache: 51360 965900
Swap: 0 0 0 … swap領域が割り当てられていない場合に以下を設定。
■スワップ領域を設定
# dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048 … swap用のファイルを作成。(count=2048 なので、この場合2Gのswapを作成。)
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 125.385 秒、 8.6 MB/秒
# mkswap /mnt/swapfile … swap用ファイルをswap領域にセット。
スワップ空間バージョン1を設定します、サイズ = 4194300 KiB
ラベルはありません, UUID=4bfaa823-0227-43ca-aab1-f7dbb788fb03
# swapon /mnt/swapfile … swap領域を有効化。
swapon: /mnt/swapfile: 安全でない権限 0644 を持ちます。 0600 がお勧めです。
# chmod 0600 /mnt/swapfile … パーミッションを設定。
# vi /etc/fstab … 再起動してもswap領域がアクティブになるようにする。
■スワップ領域を解除する場合
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
/mnt/swapfile swap swap defaults 0 0 … 追加。
# free … swap領域を確認。
total used free shared buffers cached
Mem: 1017260 956900 60360 60 9376 870244
-/+ buffers/cache: 77280 939980
Swap: 2097148 0 2097148 … swap領域が割り当てられている。
# swapoff /mnt/swapfile … 設定し直す際に実行する。(スワップ領域を無効にする。)
■スワップ領域を開放する場合
※未検証。
物理メモリが断片化している場合、以下の方法でスワップ領域を開放することができる。
ただしディスクI/O不可が非常に高く、かつ時間もかかるので実稼働中のサーバで行うのは危険なので注意。
# swapoff -a … スワップ領域の開放と無効化。
# swapon -a … スワップ領域の有効化。