突然发现网站的内存使用有点不正常,内存还使用完就开始使用虚拟内存了,情况如下:

  1. #free -m
  1.              total       used       free     shared    buffers     cached
  1. Mem:          1024        645        378          0          0        153
  1. -/+ buffers/cache:        491        532
  1. 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