北极寒流 » 网络资源 » 多个Linux vps 定时自动释放内存脚本 - 2014.08.06

多个Linux vps 定时自动释放内存脚本

VPS运行一段时间后,内存占用就会慢慢变的越来越大,如果遇到流量突然激增,在高内存占用的情况下很容易导致服务器死机。最好的方法是定时检查VPS内存占用情况,如果内存超过一定大小时自动释放内存。下面给大家分享几个从网上收集而来的Linux vps 定时自动释放内存脚本。

根据系统负载值自动重启Web服务达到释放内存的目的

下面的脚本,以装有Apache服务器的VPS为例,定时判断系统负载值,当达到5时,认为系统已经超负荷运转,这时,脚本会自动重启Apache服务,释放系统资源,以达到让VPS服务器平稳运行的目的。

#!/bin/sh
#usage: */2 * * * * root /root/checkload.sh >>/root/checkload.log
TOP_SYS_LOAD_NUM=5
SYS_LOAD_NUM=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`

echo $(date +"%y-%m-%d") `uptime`
if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM"|bc` -eq 1 ]
then
echo "AutoStart:" $(date +"%y-%m-%d %H:%M:%S") "pkill httpd" `ps -ef | grep httpd | wc -l`
pkill httpd
sleep 10
for i in 1 2 3
do
if [ `pgrep httpd | wc -l` -le 0 ]
then
service httpd start
sleep 15
echo "AutoStart:" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l`
fi
done
else
if [ `pgrep httpd | wc -l` -le 0 ]
then
service httpd start
sleep 15
echo "AutoStart:" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l`
fi
fi

脚本中TOP_SYS_LOAD_NUM表示最大允许的系统平均负载值,当超过这一值的时候,脚本就开始重启apache服务。脚本的使用也挺简便,直接到/etc/cron.d/ 建立一个定时执行文件,填入如下内容即可:

*/2 * * * * root /root/checkload.sh >>/root/checkload.log

这里*/2,表示每两分钟执行一次指定的脚本,并将执行结果输出到/root/checkload.log文件中。

你也可以根据自己的需要,来修改执行频率。

Linux自动释放内存脚本2

代码如下,在root目录下建立cache.sh文件
1、vim cache.sh

#! /bin/bash
#Memory小于400M时 释放Cached的内存
freemem=$(cat /proc/meminfo | grep "MemFree" | awk '{print $2}')
if [ $freemem -le 409600 ];then
date >> /var/log/mem.log
free -m >> /var/log/mem.log
sync
sync
echo 3 > /proc/sys/vm/drop_caches
free -m >> /var/log/mem.log
fi

# 说明,释放前最好sync一下,防止丢数据。
2、添加可执行的权限

chmod +x cache.sh

3.让他每5分钟执行一次

crontab -e

把下面添加进去
*/5 * * * * sh /root/cache.sh
4.完成

Linux自动释放内存脚本3

# vim /root/satools/freemem.sh

#!/bin/bash

used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`

echo "===========================" >> /var/log/mem.log
date >> /var/log/mem.log
echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.log

if [ $free -le 100 ] ; then
                sync && echo 1 > /proc/sys/vm/drop_caches
                sync && echo 2 > /proc/sys/vm/drop_caches
                sync && echo 3 > /proc/sys/vm/drop_caches
                echo "OK" >> /var/log/mem.log
else
                echo "Not required" >> /var/log/mem.log

将脚本添加到crond任务,定时执行.

# echo "*/30 * * * * root /root/satools/freemem.sh" >> /etc/crondta

06

多个Linux vps 定时自动释放内存脚本

分享到: