当内存使用率超过 90% 时重新启动服务

当内存使用率超过 90% 时重新启动服务

我不确定这是否可能,但是当内存使用量已超过 90% 时,我可以以某种方式重新启动服务吗?

我的意思是脚本将检查内存,如果内存使用量超过 90%,它将重新启动/执行重新启动我的服务?

答案1

看看 SystemD 的资源控制

结合起来MemoryMax应该Restart=always可以达到目的。

答案2

最后写了自己的剧本

m=`free -m | head -n value | tail -n 1 | tr -s " " | cut -d " " -f value`
if [ $m -ge 10000 ]; then
  systemctl restart service
fi

答案3

这是另一种更简洁的方法,可以直接在 cron 任务中使用:

[ $(free | awk '/Mem/{printf "%d", $3/$2 * 100.0}') -ge 90 ] && /usr/bin/systemctl restart service

相关内容