percona toolkit pt-kill 命令 --ignore-state 标志

percona toolkit pt-kill 命令 --ignore-state 标志

我有以下 pt-killdaemon设置。它可以工作但不会终止查询,例如SELECT GET_LOCK(300)。如果我删除,--ignore-state 'User lock'这会修复它吗?

sudo /usr/bin/pt-kill --ignore-state 'User lock' --rds --match-command Query --victims all --match-user phppoint --daemonize --busy-time 15 --kill --print h=HOST,u=master,p=PASSWORD,P=3306

看起来如果我不指定--ignore-state默认设置就会被锁定。这还能用吗?

来自手册:

默认设置是,如果线程被锁定以等待另一个线程,则不会将其杀死。

终止锁定的查询有哪些缺点?

答案1

User lock

The thread is going to request or is waiting for an advisory lock requested with a GET_LOCK() call. For SHOW PROFILE, this state means the thread is requesting the lock (not waiting for it). 

所以我猜你的查询不属于这个类别。请找到适合线程状态的状态并应用相同的状态https://dev.mysql.com/doc/refman/8.0/en/general-thread-states.html

如果您终止锁定的查询,我能看到的唯一主要缺点是依赖应用程序/后端的行为可能会发生变化。在终止之前检查SHOW FULL PROCESSLIST查询,EXPLAIN以便您了解影响(谁/何时/什么)。

编辑1:所以首先检查线程的类型SELECT GET_LOCK(300)并相应地更改您的命令,如果您选择正确的状态,它肯定会起作用,直到遇到一些错误。

希望这会有所帮助。

相关内容