こんにちわ。Adachinです。
前回、swapという言葉が出ましたが、
ちょっと概論とその調整についてブログします。
■swapとは
実メモリーから使用中の内容の一部を取り出して、
退避するためのハード・ディスク上の領域。
いくらメモリーの容量がたくさんあっても
swap領域はちゃんと設定したほうがいいと思われる。
■swap枯渇の原因
じゃあなんでこんなことになるのか。
1, 物理メモリの空きが不足している
2,物理メモリの空き領域が断片化している
3,ApacheのMaxclientsの値がデカすぎる
2の物理メモリの空き容量が足りても、領域を確保できるまで物理メモリに存在するページを
swapしてしまうという・・・
そこらへんはswapしないように調整しましょう。
■メモリー容量の確認
1 |
$ free -m |
1 2 3 4 |
total used free shared buffers cached Mem: 458 402 56 0 12 289 -/+ buffers/cache: 99 358 Swap: 2559 2 2557 |
まだ2しか使っていないことが分かる。
■調整方法
・Swappinessとは
カーネルがswap処理を行う頻度を変更するためのパラメータ(0~100)
低い値を設定するとカーネルは可能な限りswapを行わないようにし、
高い値を設定すると積極的にswap領域を利用しようとする。
既定の値は60となり、大抵のシステムでは100に設定すると全体的なパフォーマンスに悪影響を及ぼす。0を含め低い値に設定すると応答速度が向上(反応までの遅延が減少する)とされる。
値(0 ~ 100) | スワップ頻度 |
vm.swappiness = 0 | メモリが一杯になるまでスワップを利用しない |
vm.swappiness = 60 | 規定値 |
vm.swappiness = 100 | 全体のパフォーマンスに影響しうるほど積極的にスワップ処理を行う |
■現在値の確認
1 2 |
$ cat /proc/sys/vm/swappiness 60 |
or
1 2 |
$ sysctl -a |grep vm.swap vm.swappiness = 60 |
■一時的な変更
1 |
# echo 10 > /proc/sys/vm/swappiness |
or
1 |
# sysctl -w vm.swappiness=10 |
■恒久的な変更
1 2 |
# vi /etc/sysctl.conf vm.swappiness = 10 |
・再読み込み
1 2 3 |
# sysctl -p vm.swappiness = 10 サーバ再起動でもOK |
■まとめ
swapの設定は難しいので
よく勉強しないとわからん。
次回はOOM Killerについてブログします。
0件のコメント