首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

pt-kill 進階用法:依規則精準殺掉問題連線的常見場景與指令範本

     編輯:MySQL 綜合教學

pt-kill 進階用法:依規則精準殺掉問題連線的常見場景與指令範本

核心參數速查

  • --busy-time:查詢執行時間閾值
  • --idle-time:閒置時間閾值
  • --victims all:殺掉所有匹配連線 (預設 oldest 僅殺最久)
  • --interval:檢查間隔,預設 30s,建議調為 1-5s
  • --print:列印被殺連線資訊
  • --match-command:匹配 Command (Query、Sleep、Binlog Dump...)
  • --match-state:匹配 State (Locked、Sending data、Copying to tmp table...)
  • --match-info:正則匹配 SQL 文本
  • --match-db/user/host:匹配資料庫/用戶/來源主機

常用場景指令範本

1. 殺掉閒置超過 5 秒的 Sleep 連線

pt-kill --match-command Sleep --idle-time 5 \
  --host=HOST --port=PORT --interval=1 --print --kill --victims all

2. 殺掉執行超過 5 秒的活躍查詢

pt-kill --match-command Query --busy-time 5 \
  --host=HOST --port=PORT --interval=1 --print --kill --victims all

3. 殺掉匹配特定 SQL 模式且執行超時的查詢

pt-kill --match-command Query --busy-time 5 \
  --match-info "DELETE|UPDATE" \
  --host=HOST --port=PORT --interval=1 --print --kill --victims all

4. 殺掉正在 Filesort 的查詢

pt-kill --match-command Query --match-state "Sorting result" --busy-time 5 \
  --host=HOST --port=PORT --interval=1 --print --kill --victims all

5. 殺掉正在建立臨時表的查詢

pt-kill --match-command Query --match-state "Copying to tmp table" --busy-time 5 \
  --host=HOST --port=PORT --interval=1 --print --kill --victims all

實務建議

  1. 生產環境先用 --print 觀察一段時間,確認匹配精準後再加 --kill
  2. --victims all 較激進,核心業務庫建議用 oldest 或配合 --match-user 限定非核心帳號
  3. 搭配 --log-dsn 記錄所有殺查動作,便於事後審計
  4. 若需監控多實例,建議寫 systemd service 或 supervisord 管理多個 pt-kill 進程
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved