如果它占用了太多的处理能力,有没有办法自动重新启动MySQL?

由于我的脚本不好,MySQL有时会出问题 – 占用大量的CPU能力(平均负载超过20个 – 我只有8个内核)! 当我重新启动它是一切都很好。

所以我的问题是:是否有一种方式来重新启动MySQL时,占用了400%以上的CPU?

我最好只重新启动导致问题的关联账户。

服务器:与whm的Linux

在这种情况下重新启动mysql是一个不好的做法。 它会导致你的缓冲区抖动,如果你的数据库足够大 – 预热需要一些时间。

我想你有一些沉重的查询,消耗太多的CPU。

使用mysql> show full processlist来识别长时间运行的查询,并尝试优化它们:创build索引,重新编写查询以加快运行速度,减lesssorting。

要立即得到结果,您可以使用以下命令来终止此查

mysql> kill QUERYIDNUMBER

要直接回答你的问题 – 你可以安全地重新启动它与service mysql restart ,但这将需要很长的时间。 重新启动将阻止到数据库的所有新连接,但是将等待所有正在运行的查询完成。 你可能会杀死大量的查询来加速。

另外,如果你需要加快mysql的重新启动,这是一个很好的窍门。

首先运行mysql> set global innodb_max_dirty_pages_pct = 0; 然后等到所有(或几乎所有)脏缓冲区页面刷新到磁盘,请参阅mysqladmin ext -i10 | grep dirty mysqladmin ext -i10 | grep dirty

当你有这样的输出:

| Innodb_buffer_pool_pages_dirty | 12 |

您可以重新启动您的MySQL服务器,它会更快:

service mysql restart

我只能重复一遍,试着通过重新启动mysql来解决这个问题确实是一个坏主意。 您应该尝试识别和优化导致您的服务器超载的查询。

两个提示可以帮助你:

  1. mysqltuner.pl会分析你当前的configuration,并告诉你一些明显的性能杀手。
  2. 慢查询日志将logging持续时间超过可configuration时间的所有查询。 然后,您可以使用EXPLAIN SQL命令分析各个查询。

monit会为你做这个: http : //en.wikipedia.org/wiki/Monit