我的网站非常慢或没有响应。快速查看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 的慢速日志,您还应该查看它。