Назад | Перейти на главную страницу

percona toolkit команда pt-kill - флаг-игнорирование состояния

У меня следующий pt-kill daemon настроить. Он работает, но не убивает такие запросы, как 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 по умолчанию заблокировано. Будет ли это работать?

Из руководства:

По умолчанию потоки не будут убиты, если они заблокированы в ожидании другого потока.

Каковы недостатки уничтожения заблокированных запросов?

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 запрос, чтобы знать влияние (Кто / Когда / Что).

Edit1: Итак, сначала проверьте, какой тип потока SELECT GET_LOCK(300) is и соответствующим образом измените свою команду, если вы выберете правильное состояние, она наверняка будет работать, пока не обнаружит какую-нибудь ошибку.

Надеюсь, это поможет.