奇怪的 MySQL 僵尸任务

奇怪的 MySQL 僵尸任务

在我看来,好像我工作服务器上总是运行着 1 个 SQL 任务,而我的个人事务却“卡住”了,并且永远运行下去。

PID USER      PR   NI VIRT  RES  SHR S %CPU  %MEM  TIME+   COMMAND
890 mysql     20   0  326m  54m 7704 S 9999  1.4  13:05.03 mysqld 

有没有办法可以设置一个机器人来查找类似的东西,关闭它并重新启动 MySQL,这样我就不需要手动执行此操作了?

更新

我应该指出,它并不总是保持在 9999% 的 CPU 水平。有时它会显示 1.4 或类似的数字

答案1

您永远不应该通过重新启动数据库来终止查询。在 MySQL 中,您可以使用 查看正在运行的查询,show full processlist;并使用 终止进程kill $CONNECTIONNUMBER;

您可以编写脚本来执行此功能。

答案2

您是否运行过类似 MySQL 调优脚本mysqltuner.pl或者调优入门指南确保您的基本 MySQL 设置正确?

您不能随意将设置值更改为某人拥有的值,因为配置高度依赖于可用的硬件资源、存储的数据量以及针对该数据运行的查询。在我的服务器上运行良好的 MySQL 配置可能会使您的服务器崩溃。

答案3

我与我的一位 MySQL DBA 进行了交流,他告诉我 key_buffer_size 可能设置为默认值,这可能是 CPU 使用率过高的罪魁祸首。如果内存资源可用,通常将默认值从 8M 提高到 330M 左右应该有助于解决此问题。此更改将需要维护窗口来重新启动 MySQL 服务。

相关内容