程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 使用pt-stalk診斷MySQL問題

使用pt-stalk診斷MySQL問題

編輯:MySQL綜合教程

在MySQL服務器出現短暫(5~30秒)的性能波動的時候,一般的性能監控工具都很難抓住故障現場,也就很難收集對應較細粒度的診斷信息。另外,如果這種波動出現的頻率很低,例如幾天才一次,我們也很難人為的抓住現場,收集數據。這正是pt-stalk所解決的問題。

pt-stalk是Percona-Toolkit的一部分(其前身是Aspersa的一部分)。安裝Percona-Toolkit後,可以通過man pt-stalk了解如何使用該工具,本文的介紹是man pt-stalk的一個子集,強烈建議直接閱讀man pt-stalk。額外的,本文將提供pt-stalk示例命令可供參考。

1. 使用pt-stalk pt-stalk –collect-tcpdump –function status \ –variable Threads_connected –threshold 2500 \ –daemonize — –user=root –password=YOURPASSWORD

上面的命令表示,讓pt-stalk後台運行(–daemonize),並監視SHOW GLOBAL STATUS中的Threads_connected狀態值,如果該值超過2500,則觸發收集主機和MySQL的性能、狀態信息。pt-stalk會每隔一秒檢查一次狀態值,如果連續5次滿足觸發條件,則開始收集。

–collect-tcpdump表示除了收集基本信息外,還將額外使用tcpdump收集當時的網絡包,類似的還可以使用–collect-gdb等。

2. pt-stalk如何連接MySQL

在上面的命令中參數,”– –user=root –password=YOURPASSWORD”表示,將使用”–”後面的所有參數用於mysql和mysqladmin命令,所以這裡確保你給出正確的用戶名和密碼。下面是man pt-stalk中給出的語法:

SYNOPSIS Usage: pt-stalk [OPTIONS] [-- MYSQL OPTIONS]

看到前面的[OPTIONS]是pt-stalk使用的參數,[-- MYSQL OPTIONS]是mysql和mysqladmin使用的參數。

3. pt-stalk的工作狀態

pt-stalk是一個後台程序,默認我們可以通過文件/var/log/pt-stalk.log,查看pt-stalk的運行狀態:

tail -f /var/log/pt-stalk.log 2012_06_05_00_00_35 Check results: Threads_connected=1641, matched=no 2012_06_05_00_00_36 Check results: Threads_connected=1641, matched=no 2012_06_05_00_00_37 Check results: Threads_connected=1641, matched=no 2012_06_05_00_00_38 Check results: Threads_connected=1641, matched=no 2012_06_05_00_00_39 Check results: Threads_connected=1641, matched=no 2012_06_05_00_00_40 Check results: Threads_connected=1641, matched=no 2012_06_05_00_00_41 Check results: Threads_connected=1641, matched=no

你還可以通過參數–log指定一個你希望的log目錄和文件。

4. pt-stalk收集的性能和狀態數據

默認pt-stalk將收集的數據放在目錄/var/lib/pt-stalk下,你可以使用參數–dest指定你希望的目錄。下面是一個pt-stalk觸發收集後的數據文件:

\

這些數據都是原始數據,我們可以根據這些來分析當時MySQL或者主機是否有異常。

5. pt-stalk的觸發條件

在上面的示例中觸發參數是:”–function status –variable Threads_connected –threshold 2500″,表示MySQL狀態值Threads_connected超過2500時觸發數據收集。常用的觸發條件還可以使用Threads_running等。

另外還可以使用SHOW PROCESSLIST的中的結果觸發,例如”–function processlist –variable State –match statistics –threshold 10″表示,show processlist中State列的值為statistics的線程數超過10則觸發收集。

6. 一些其他有用的參數

–iterations:該參數指定pt-stalk在收集幾次故障現場後就退出。默認pt-stalk會一直運行

–run-time:觸發收集後,該參數指定收集多長時間的數據。默認是30秒

–sleep:為防止一直觸發收集數據,該參數指定在某次觸發後,必須sleep一段時候才繼續觀察並觸發收集。默認是300秒

–interval:默認情況pt-stalk會每隔一秒檢查一次狀態數據,判斷是否需要觸發收集。該參數指定間隔時間,默認是1秒。

–cycles:默認情況pt-stalk只有連續觀察到五次狀態值滿足觸發條件時,才觸發收集。該參數控制,需要連續幾次滿足條件,收集被觸發,默認是5次。

參考文獻:man pt-stalk;man percona-toolkit

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved