• 推荐使用最新版火狐浏览器或Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Linux根据负载自动释放内存脚本

服务器 紫鹰 3年前 (2020-05-12) 1359次浏览 0个评论 扫描二维码

Linux根据负载自动释放内存脚本

VPS运行一段时间后,内存占用就会慢慢变的越来越大,如果遇到流量突然激增,很容易导致服务器死机。最好的方法是定时检查VPS内存占用情况,如果内存超过一定大小时自动释放内存。

Linux根据负载自动释放内存脚本

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

下面 Linux 根据负载自动释放内存的脚本,以装有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 服务。脚本的使用也挺简便,直接 crontab -e 添加一条定时任务即可:

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

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

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


版权所有丨如未注明 , 均为原创丨
转载请注明原文链接:Linux根据负载自动释放内存脚本
喜欢 (0)
[谢谢打赏!]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址