救命!为什么MySql只是停止了?

时间:2009-06-06 07:07:26

标签: mysql django debugging

我们相对较高的流量网站只是停了下来,我们完全被难住了。我们运行Django和Mysql(InnoDB),我们试图弄清楚为什么它突然变得非常慢。

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

4 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

答案 1 :(得分:1)

在SELECT上运行EXPLAIN。 仔细阅读本页:

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

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

答案 2 :(得分:1)

感谢大家的回复。

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

答案 3 :(得分:0)

'mysql server'和'app server'在同一个盒子上并与同一个数据库实例交谈吗?

您的问题建议不要,所以我会在网络上查找问题 - 首先从每个框中ping数据库服务器并比较结果。

一旦你完成了这个,你需要对问题更加具体一点 - ping时间是否相同,你运行相同的查询等等......