Linux云主机 VPS 到达指定内存占用率就重启脚本

cera cera

在 Linux 中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是 Linux 内存管理的一个优秀特性,在这方面,区别于 Windows 的内存管理。主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高 Linux 系统的数据访问性能。而 Windows 是只在需要内存时,才为应用程序分配内存,并不能充分利用大容量的内存空间。换句话说,每增加一些物理内存,Linux 都将能充分利用起来,发挥了硬件投资带来的好处,而 Windows 只将其做为摆设。

 

综上所述,一般不需要太关注 Linux 的内存占用情况,如果 SWAP 占用率很高的话一般可能就是内存不够用了。swap 存在的意义在于存放不经常使用的数据,而不是物理内存放不下的数据,如果经常使用的数据在物理内存中存放不下,内核会被迫将部分数据分配到 swap,接下来会产生大量的硬盘读写 IO,大量的硬盘读写 IO 会产生的后果为:

CPU 在处理运算时会有大量的时间在等待硬盘 IO,严重影响服务器的响应速度;

同服务器上的其他VPS都会受到影响(可能导致服务商停止服务);

临时解决办法

将下面内容保存到 /root/mem.sh ,这个脚本的意思是使用内存超过 512M 就重启,512 可以改为合适的数字

  1. #!/bin/sh
  2. used=`free -m|grep Mem:|awk ‘{print $3}’`
  3. if [ $used gt 512]
  4. then
  5. reboot
  6. else
  7. echo “ok”
  8. fi

给予权限 755 以上,或者执行下面命令:

  1. chmod +x /root/mem.sh

再添加一行定时任务/var/spool/cron/root:

  1. */5 * * * * /root/mem.sh > /home/wwwlogs/mem.log

cera cloudiplc tengxunyun

相关推荐