-2

我很困惑;我假设一个缓慢的查询。

注意:当使用我的应用程序/网站的人较少(每个不到 0.01 秒)时,我的所有查询都经过测试并且运行良好。

所以我目前的设置有一些高 cpu 使用率,我想知道为什么?有没有可能是索引问题?

我们可能的解决方案:我们认为我们可以使用 XML 缓存文件来存储每小时的信息,然后减少 MySQL 查询的负载?(每小时更新文件)。

做这样的事情对我们有好处吗?既然我们有SSD驱动器?还是会比以前慢?

当前处于高流量时间,我们的网站/应用程序最多可能需要 30 秒才能返回第一个字节。我的网站在 Plesk 12 服务器下运行。

更新 这里有更多关于我的mysql设置的信息.. http://pastebin.com/KqvFYy8y

4

2 回答 2

2

有没有可能是索引问题?

也许但不一定。您需要首先确定哪个查询很慢。您可以在慢查询日志中找到它。然后分析查询。这在文献中有解释,或者您可以联系顾问/导师。

我们认为我们可以使用一个 xmlcache文件来存储每小时的信息......然后减少我们的 mysql 查询的负载?

好吧,缓存失效并不是最简单的事情,但是每小时都有固定的节奏,这似乎很容易。但请注意,只有当您缓存的实际查询很慢时,它才会有所帮助。Mysql一般内置查询缓存,先检查是否开启。

做这样的事情对我们有好处吗?

通常,如果要做的事情很好,结果也会很好。有时即使是坏事也会带来好的结果,所以这样一个笼统的问题很难回答。相反,我建议您在继续询问之前先获得更具体的信息。听起来更像是猜测。别猜了。真的,那只是前两分钟,在那之后,别再猜测了。

既然我们有一个ssd驱动器?还是会比以前慢?

您可以尝试在其上扔硬件。同样,文学和顾问/导师可以为您提供极大的帮助。但不要再猜测了。真的。

于 2015-05-02T08:48:46.723 回答
1

我认为查询并不总是很慢。如果这是真的,那么查询不太可能是问题所在。

您需要知道什么在使用 CPU。可能是带有无限循环的失控脚本。

尝试这个:

<?php
header('Content-Type: text/plain; charset=utf-8');
echo system('ps auxww');
?>

这应该以这种格式返回一个列表:

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

向下扫描列并在列%CPU中查找您的用户名USER

如果您看到一个进程占用 100% CPU,您可能想要获取该PID数字并且:

system('kill 1234');  

1234在哪里PID

mysql 进程以 441% 和 218% 运行似乎很成问题。

假设这是一个共享服务器,可能有另一个用户正在运行占用 CPU 的查询。您可能需要与您的提供者联系。

我一直在我的一台共享服务器上观看,mysql 进程的 CPU 没有超过 16%。

MySQL调谐器

从链接看来,您的流量很大。

  • 调谐器运行了 23.5 分钟
  • 不使用索引执行的连接:69863

69863 在 23.5 分钟内。每秒产生近 50 个查询。

这听起来正确吗? 每秒运行 150 次 JOIN 查询。

索引 JOIN 表

您有一个带有 JOIN 的查询。

这些表按列连接。

在连接的表上,将索引添加到将两个表连接在一起的列。

于 2015-05-01T21:22:38.467 回答