1、
也许你会经常遇到一个经典的swap大小设置问题(比如狗血的面试题)。
很多人多会说内存的2倍、、
但是个人认为一般而言 swap 不要设置太大,最好不要超过4G。
2、
进程申请内存不足时,发现某些进程占用空闲内存:
swap out :
os mem--> swap
当被swap out的进程从空闲状态转换为需要使用内存状态,发现内存不足:
swap in :
os swap --> mem
通过vmstat命令可以看到swap out ,swap in (so,si) 的情况:
根据概念可知,一般在内存充足的情况下是不应有大量的 si,so的
3、
系统swap使用限制:
[root@db03 ~]# sysctl -a|grep swap
vm.swappiness = 60
# /etc/sysctl.conf 内存参数配置文件
0--100
0 尽可能最大使用物理内存(当内存不足时不会使用swap,操作系统会找到占用内存最大的进程把他kill掉)
100 尽可能使用swap
(对于数据库这个IO密集型应用,不应该把vm.swappiness设置的太大,建议设置在10以内,当然如果你怕操作系统oom掉数据库也要根据不同情况而定)
4、
增加swap文件大小:
创建swap文件:
dd if=/dev/zero of=swapfile bs=1024 count=1000
mkswap swapfile
激活swap:
swapon swapfile
开机自动挂载swap文件:
#vi /etc/fstab
/root/swap/swapfile swap swap defaults 0 0
5、
删除增加的swap:
swapoff swapfile
去除开机自动挂载