Memo

メモ > サーバ > 構築: 基本設定 > スワップ領域を設定

■スワップ領域を設定
※メモリ不足の際に、ハードディスクの一部をメモリとして扱えるようにする ※スワップ領域がない場合、メモリ不足になると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 … スワップ領域の有効化

Advertisement