奇怪的MySQL僵尸任务

在我看来,似乎在我的服务器上运行的SQL总是有1个任务,而我的个人资料会“卡住”并且一直运行。

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 

有没有一种方法,我可以安装一个机器人来find这样的东西,closures它,并重新启动MySQL,所以我不需要手动做?

更新

我应该指出,它并不总是保持在9999%的CPU。 有时它显示1.4或类似的东西

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

你可以写一个脚本来执行这个function。

你运行MySQL调优脚本,如mysqltuner.pl或tuning-primer.sh ,以确保您的基本MySQL设置是正确的?

您不能随意将设置值更改为某人所拥有的设置值,因为configuration高度依赖于可用的硬件资源,存储的数据量以及针对该数据运行的查询。 在我的服务器上工作良好的MySQLconfiguration可能会导致您的服务器中断。

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