bash - CPU使用率超过N%时如何重启服务?

标签 bash ubuntu resources ubuntu-18.04

我有一个托管在具有 2 核 CPU 和 4GB RAM 的服务器(ubuntu 18.04)上的网站。我的网站通常平均有 200 个实时并发 session (在线用户)。
此外,对于这 200 个在线用户,资源使用量几乎为:

  • 50% 的 RAM
  • 65% 的 CPU

  • 需要注意的是,我的网站是一个问答网站。因此,用户来到我的网站并在不同领域提出他们的问题。有时在电视比赛中,有人提出问题,人们会立即访问我的网站进行搜索。或者他们在谷歌内部搜索并找到我网站的链接并入侵我的网站。
    在这种情况下,我的服务器的 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/

    相关文章:

    bash - 使用 bash 命令(带管道)的输出作为另一个命令的参数

    PostgreSQL 错误 : could not connect to database template1: could not connect to server: No such file or directory

    资源字典中使用的 WPF 资源文件

    regex - 纯 Bash 替换捕获组

    bash - 带有空白/空 grep 的 Do 语句返回时?

    python - pip已安装但无法运行

    Android:如何使用声音资源包含通知声音?

    ubuntu - 在 Ubuntu 14.04 上构建 linuxbrew( Homebrew 软件)独立版本

    linux - AWK 数字变量被视为字符串

    Android ldpi 设备应该使用 mdpi 资源吗?