我有一个托管在具有 2 核 CPU 和 4GB RAM 的服务器(ubuntu 18.04)上的网站。我的网站通常平均有 200 个实时并发 session (在线用户)。
此外,对于这 200 个在线用户,资源使用量几乎为:
需要注意的是,我的网站是一个问答网站。因此,用户来到我的网站并在不同领域提出他们的问题。有时在电视比赛中,有人提出问题,人们会立即访问我的网站进行搜索。或者他们在谷歌内部搜索并找到我网站的链接并入侵我的网站。
在这种情况下,我的服务器的 CPU 将被使用超过 90% 这主要是因为 MySQL 服务。
此外,还有另一种情况。当 google-bot 爬虫开始索引我的网站链接或检查损坏的链接时,同样的 CPU 使用率会发生。关键是,我目前无法增加服务器资源。将来当我的网站获得赞助商时,我会这样做。
因此,作为一种解决方法,我只是尝试编写一个脚本,当 CPU 使用率超过 90% 时自动重新启动 MySQL 服务。目前,当我看到我的网站关闭或页面加载延迟时,我会手动执行此操作。
经过一番研究,我可以通过这个命令得到实时的 CPU 使用百分比:
echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')]
另外,我以这种方式重新启动 MySQL:systemctl restart mysql
我的确切问题是,我怎样才能将该条件准确地写为 Linux bash 脚本?
#!/bin/bash
if <how to check CPU usage> then
systemctl restart mysql
fi
最佳答案
如果你真的想走这条路线,只需检查使用率是否超过 90%。然后使用 cron
定期运行此脚本.
#! /bin/bash
(( usage = 100 - $(vmstat 1 2 | tail -n1 | awk '{print $15}') ))
if (( usage > 90 )); then
systemctl restart mysql
fi
关于bash - CPU使用率超过N%时如何重启服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68488992/