为什么一个进程占用了这么多资源

为什么一个进程占用了这么多资源

我的网站非常慢或没有响应。快速查看top命令会显示以下内容:

PID  USER      PR  NI  VIRT  RES  SHR  S %CPU  %MEM    TIME+  COMMAND
1709 mysql     20   0  828m  432m 5584 S 382.6  5.4   7414:24 mysqld

其余进程都远低于这些值。显然 MySQL 存在一些问题。我如何检查实际发生了什么以及为什么它会占用这么多资源?

谢谢。

答案1

在 mysql 控制台中运行show processlist以获取当前正在运行的查询列表。查找已经运行了一段时间的查询,看看它们在做什么。可能有一些查询正在执行大量工作(通常是由于索引不佳)。

答案2

除了womble 的回答(这指向优化您的查询);对于那些对 382.6% 的 CPU 使用率感到困惑的人,请注意 MySQL 是一个多线程服务器。它可能全速运行 4 个线程,几乎独占 4 个内核(我相信在足够大的机器上它可以做更多)。按“H”键可top分别显示每个线程。

答案3

如果启用了 mysql 的慢速日志,您还应该查看它。

相关内容