Mysql突然变慢,可能是什么原因造成的?

Mysql突然变慢,可能是什么原因造成的?

前几天mysql突然变得很慢,查询需要10多秒才能完成,而以前它们可以在100毫秒内完成...这种情况持续了大约一个小时,然后速度又恢复正常了。什么原因导致这样的问题?

更多信息:mysql 版本是 5.0.51a mysql 数据库位于具有 1.5 GB RAM 的专用机器上。当 mysql 服务器运行缓慢时,没有使用交换空间。

这是来自数据库的 mysqlreport http://pastebin.com/au6yMWqQ所有缓存都已满。

我注意到服务器用于解析主机名的 DNS 服务器最近有时会有点慢。这会造成影响吗?

谢谢

答案1

有很多因素都可能导致这种情况。

如果您可以自行测量查询,则缓慢的解析器不会产生影响。但是,如果用户根据他们连接的主机名获得访问权限,则缓慢的解析器在连接到服务器时肯定会产生影响。MySQL 还有一个用于记录连接的主机名的选项。

mysql-report 没有过多提及索引。当我看到这种情况时,我通常会选择其中一个需要很长时间的查询并运行EXPLAIN它。如果它不使用任何索引,并且需要进行全表扫描 - 我会看看我是否能够添加一个可以使其更快的索引。我以前见过索引意外消失(有人意外删除了它,升级脚本删除了它并且之后没有放回它,或类似情况)。

服务器可能以多种方式超载:

  • 您的 CPU 指标显示什么?它是否卡在 IOWait、系统时间、用户时间,还是实际上处于空闲状态?
  • 根据数据库的不同,它实际上可能是一个冷查询缓存,在服务器重启后需要一些时间才能恢复正常。如果数据变化很大,这种情况不太可能发生 - 但如果主要用于查找,则可能会发生。

也可能是一系列锁定表的查询 - 阻止每次在约 10 秒内进行查找。如果您将慢查询记录到文件中,则可以获取有关此信息。

这可能是 MySQL 的一个错误。证明这一点的难度很大,但确实存在这种情况。

您需要更多数据才能找出原因。您需要 CPU、内存、MySQL 指标等指标。我可以推荐一个监控工具,比如 Munin 吗?有一个非常好的 MySQL 插件,它会在发生这种情况时为您提供有趣的数据。

答案2

可能最快了解哪些因素会消耗你的 MySQL 服务器资源的方法就是使用这个简单的命令:

SHOW PROCESSLIST;

它会告诉您哪些 MySQL 进程处于活动状态、它们处于活动状态的时间以及它们正在做什么。每当我的 MySQL 服务器出现问题时,SHOW PROCESSLIST 就是我的第一道“防线”。

相关内容