MySQL 开始消耗大约 40% 的系统 CPU 时间,并突然失去响应

MySQL 开始消耗大约 40% 的系统 CPU 时间,并突然失去响应

我使用 Debian 6.0.3 x86_64 和 Dotdeb 存储库中的 MySQL 5.5.20-1~dotdeb.0-log。根据图表。我无法连接到正在运行的mysqld进程,因此不得不将其终止。我在日志中找不到任何有用的信息。我的设置似乎很常见(我假设 Dotdeb 只是重新分发了库存 MySQL 版本),我以前从未见过这样的情况。这种情况的可能根本原因是什么?我如何才能在将来防止这种情况发生?

答案1

如果再次发生,请运行strace -p <PID> -T或将其替换-T-c

-T选项会在每次系统调用后打印一个时间增量,让您知道它花了多长时间。如果您看到像stat()和这样的特定调用open()花费了很长时间,您可以推断出一件事,如果您看到像semop()poll()这样的调用花费了很长时间,您可以推断出另一件事。看到很多这样的调用也是如此,但这可能更难看出下一个选项的作用所在。

-c选项会等到程序完成或者您退出ctrl-c,然后打印所有系统调用的摘要以及每种类型所花费的时间。

运气好的话,这应该会让你知道 MySQL 正在做什么。然后你只需要弄清楚该怎么做。

相关内容