mysql突然变慢了,潜在的原因是什么?

Tho*_*ang 5 mysql

前几天mysql突然变得很慢,查询需要10多秒才能完成,而以前是100ms以内完成的……大概持续了一个小时,然后速度又恢复正常了。什么会导致这样的问题?

更多信息: mysql 版本是 5.0.51a mysql 数据库位于一个具有 1.5 GB ram 的专用盒子上。当 mysql 服务器很慢时,没有使用交换。

这是来自数据库http://pastebin.com/au6yMWqQ的 mysqlreport 没有一个缓存已满..

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

谢谢

Kvi*_*sle 3

造成这种情况的因素有很多。

如果您可以自行衡量查询,那么缓慢的解析程序应该不会产生影响。但是,如果用户根据其连接的主机名进行访问,那么缓慢的解析器在连接到服务器时肯定会产生影响。MySQL 还可以选择记录连接的主机名。

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

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

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

它还可能是锁定表的一系列查询 - 防止一次在约 10 秒内发生查找。如果将慢速查询记录到文件中,您可以获得相关信息。

这可能是 MySQL 中的一个错误。证明这一点的负担相当沉重,但它确实发生了。

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