解决VPS内存还没用完就使用Swap问题
突然发现网站的内存使用有点不正常,内存还使用完就开始使用虚拟内存了,情况如下:
- #free -m
- total used free shared buffers cached
- Mem: 1024 645 378 0 0 153
- –/+ buffers/cache: 491 532
- Swap: 512 177 334
经查找资料,解决办法如下:
1.查看系统的swappiness
cat /proc/sys/vm/swappiness
60
显示是默认60,此值如果为0,那么积极使用物理内存,如果为100,积极使用swap
2.临时修改swappiness值为0
sysctl vm.swappiness=0
但是这只是临时性的修改,重启系统后会恢复默认的60
3.永久修改参数值
vi /etc/sysctl.conf
在最后加上这样一行:
vm.swappiness=0
#sysctl -p /etc/sysctl.conf
此时报错如下错误,经网上查阅这些问题是因为openvz模版引起的
net.ipv4.ip_forward = 0
net.ipv4.tcp_syncookies = 1
error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key
error: “net.bridge.bridge-nf-call-iptables” is an unknown key
error: “net.bridge.bridge-nf-call-arptables” is an unknown key
error: permission denied on key ‘net.ipv4.tcp_timestamps’
error: permission denied on key ‘net.ipv4.tcp_synack_retries’
error: permission denied on key ‘net.ipv4.tcp_syn_retries’
error: permission denied on key ‘net.ipv4.tcp_mem’
error: permission denied on key ‘net.ipv4.tcp_max_orphans’
error: permission denied on key ‘net.core.wmem_default’
error: permission denied on key ‘net.core.rmem_default’
所以执行如下操作:
修复modprobe的:
rm -f /sbin/modprobe
ln -s /bin/true /sbin/modprobe
修复sysctl的:
rm -f /sbin/sysctl
ln -s /bin/true /sbin/sysctl
再次执行命令,没有问题了。
http://www.itshuji.com/technical-article/455.html