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

Percona Toolkit pt-kill 深度解析:從安裝到多實例監控的完整實踐

     編輯:MySQL 資料庫相關知識

工具定位

pt-kill:Percona Toolkit 組件,專門從 SHOW PROCESSLIST 或文件中讀取連接,按規則**打印/殺查詢/殺連接/執行自定義動作**,防止長查詢/空閒連接佔用資源影響線上業務。

安裝

# CentOS/RHEL
yum install percona-toolkit -y
# 或下載 deb/rpm 包手動安裝
# 官網:https://www.percona.com/doc/percona-toolkit/

核心使用範例

範例 1:命令行直連模式(記錄殺操作到表)

pt-kill \
  --log-dsn D=testdb,t=kill_log \
  --create-log-table \
  --host=host2 --user=root --password=root --port=3306 \
  --busy-time=10 \
  --print --kill-query \
  --match-info "SELECT|select" \
  --victims all

效果: 自動建表 testdb.kill_log 記錄操作,殺掉所有執行超 10 秒的 SELECT 查詢(大小寫兼容),默認 5 秒檢查一次。

範例 2:配置文件模式(推薦生產)

# /tmp/pt-kill.conf
host=host2
user=root
password=root
port=3306
busy-time=10
print
kill-query
pt-kill --config /tmp/pt-kill.conf --log-dsn D=testdb,t=kill_log --create-log-table --match-info "SELECT|select" --victims all

關鍵參數深度解析

受害者選擇策略 (--victims)

值行為
oldest(默認)僅殺運行最久的 1 個匹配查詢,保護長期等待的非真慢查詢
all殺掉**所有**匹配連接
all-but-oldest殺掉所有匹配,**保留運行最久的 1 個**

時間閾值

  • --busy-time N:查詢**運行時間**超過 N 秒
  • --idle-time N:Sleep **空閒時間**超過 N 秒(需 --match-command Sleep)

匹配/忽略矩陣(針對 SHOW PROCESSLIST 各列)

列匹配參數忽略參數典型值
Command--match-command--ignore-commandQuery, Sleep, Binlog Dump, Connect, Execute, Fetch, Init DB, Kill, Prepare, Processlist, Quit, Reset stmt, Table Dump
db--match-db--ignore-db數據库名
Host--match-host--ignore-hostIP/主機名
Info--match-info--ignore-infoSQL 文本(正則,區分大小寫)
State--match-state--ignore-stateLocked, login, Copying to tmp table, Sending data, Sorting result, Table lock, Updating...
User--match-user--ignore-user用戶名

動作類型

  • --kill:殺連接(線程終止)
  • --kill-query:殺查詢(語句終止,連接保留)
  • --print:僅打印(預演/審計)
  • --execute-command:執行自定義命令(如發送告警)

實戰感受與局限

  • 單進程單實例: --host 僅支援單值,**無法一個進程監控多實例**
  • 解決方案: Systemd 模板 pt-kill@.service 實例化多進程,或編寫調度腳本輪詢多實例
  • 建議: 核心實例常駐 --daemonize --kill-query,非核心實例定時 --print 預演後再開啟殺操作

總結

pt-kill 以「豐富匹配維度 + 靈活受害者策略 + 多種執行動作 + 日誌審計」構建了專業的連接治理工具。**配置文件化 + Systemd 守護 + 告警聯動** 是生產級落地的標準範式。

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