【问题标题】:Help! Why did MySql just screech to a halt?帮助!为什么 MySql 会突然停止?
【发布时间】:2010-10-31 20:15:14
【问题描述】:

我们相对高流量的网站突然停止了,我们完全被难住了。我们在 Django 和 Mysql (InnoDB) 上运行,我们试图弄清楚为什么它突然变得很慢。

以下是我们目前所知道的: 在我们的 mysql 服务器上,一个简单的查询(来自 django shell)运行得很快。 在我们的应用服务器上,一个简单的查询(来自 django shell)运行很慢。

【问题讨论】:

  • 可能是你的内存不足了。
  • 是的,您检查过磁盘空间、RAM 问题等吗?

标签: mysql django debugging


【解决方案1】:

如果没有关于查询或查询中涉及的表的任何详细信息,很难回答这个问题。

很可能是因为表中有大量数据,而您正在查询的字段缺少索引。

这可以解释为什么它在生产机器上很慢,但在开发机器上却很快(因为数据较少)。

为了更好地回答这个问题,您能否向我们提供更多详细信息?表结构、查询、表行数等?

更多假设:应用服务器上的磁盘 I/O 可能有问题,可能是 MySql 中的日志文件配置不正确(尤其是 InnoDB,这可能会导致问题)。也许有一个负载繁重的查询运行得太频繁了?当多个用户写入/读取同一个表时,表锁定?

正如我所说,没有更多细节,很难猜测。但我希望,至少我可以为您指明正确的方向。

【讨论】:

    【解决方案2】:

    在 SELECT 上运行 EXPLAIN。 仔细研究这个页面:

    http://dev.mysql.com/doc/refman/5.0/en/using-explain.html

    了解该页面上的概念是正确索引表的关键。

    【讨论】:

      【解决方案3】:

      感谢大家的回复。

      原来这是一个 DNS 问题(这是一个回归)。 MySQL 真的很愚蠢,因为默认是使用 DNS 查找。他们变得非常慢,这杀死了应用服务器和数据库服务器之间的所有网络流量。就像在我们的 my.cnf 中添加“skip-name-resolve”一样简单。

      【讨论】:

      • 啊,是的,那是一个著名的老字号。几年前被那个刺痛了。
      • 也想为后人提供意见:这是在高吞吐量环境中禁用的关键设置。
      【解决方案4】:

      “mysql server”和“app server”是否在同一个盒子上并与同一个数据库实例通信?

      您的问题表明不是,所以我会在网络上寻找问题 - 首先从每个盒子 ping 数据库服务器并比较结果。

      完成后,您需要更具体地了解问题 - ping 时间是否相同,您是否运行相同的查询等等...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-22
        • 1970-01-01
        • 2019-02-26
        • 2019-10-15
        • 1970-01-01
        • 1970-01-01
        • 2012-10-24
        相关资源
        最近更新 更多