首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

pt-kill 規則引擎實戰:按命令、狀態、SQL、用戶、庫、主機多維度自動化清理連接

     編輯:MySQL 資料庫相關知識

核心參數速覽

參數作用關鍵值
--busy-time查詢執行超時閾值(秒)如 5, 60
--idle-timeSleep 空閒超時閾值(秒)需配合 --match-command Sleep
--victims匹配多個時策略all全殺 oldest最久 all-but-oldest留最久
--interval檢查間隔(默認 30s)建議 5-10s
--print打印被殺連接審計必開
--match-command匹配 CommandQuery/Sleep/Binlog Dump/Execute/...
--match-state匹配 StateLocked/Sending data/Sorting result/...
--match-info正則匹配 SQL 文本SELECT|UPDATE|大表名/
--match-user/host/db匹配用戶/來源/庫見名知意

五大高頻場景一鍵命令

1. 清理空閒連接(防連接池洩漏)

pt-kill --match-command Sleep --idle-time 300 --victims all --interval 60 --kill --print --daemonize

2. 強殺長時間運行查詢(保核心業務)

pt-kill --match-command Query --busy-time 60 --victims all --interval 30 --kill-query --print --daemonize

3. 針對特定 SQL 模式殺查詢(如全表掃描大表)

pt-kill --match-command Query --busy-time 30 --match-info "SELECT \* FROM huge_table" --victims all --interval 10 --kill-query --print

4. 殺掉 Filesort 導致的慢查詢

pt-kill --match-command Query --match-state "Sorting result" --busy-time 20 --victims all --interval 10 --kill-query --print

5. 殺掉建臨時表的慢查詢

pt-kill --match-command Query --match-state "Copying to tmp table" --busy-time 20 --victims all --interval 10 --kill-query --print

組合拳範例:多條件 AND 邏輯

# 僅殺「報表用戶」在「報表庫」執行超過 60 秒的「查詢」
pt-kill --match-user "report_user" --match-db "report_db" --match-command Query --busy-time 60 --victims all --interval 30 --kill-query --print --daemonize

部署建議

  • 配置文件化:--config /etc/pt-kill.conf
  • Systemd 守護:多實例用 pt-kill@3306.service 模板
  • 日誌輪轉:logrotate 管理 pt-kill.log
  • 告警聯動:殺操作觸發 Webhook 通知

掌握這套規則引擎,讓異常連接「有規則可匹配、有策略可執行、有日誌可追溯、有告警可感知」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved