使用pt-stalk分析MySQL的效能波動 (轉)

來源:互聯網
上載者:User

標籤:else   觀察   通過   問題   ror   war   val   cpu   process   

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


參數–function:設定觸發條件,包括status、processlist、自訂指令碼,詳細見觸發條件部分。–dest:設定collect資訊的儲存目錄,預設/var/lib/pt-stalk/。
另外設定–dest /u01/mysql選項到mysql目錄之後,pt-stalk在清理超到期限的日誌時,會暴力的將該目錄下所有修改時間超過一定日期的檔案全部刪掉,因此在設定dest目錄時必須謹慎(如果設定最好是一個獨立的目錄,而不是跟mysql或者其他設定在同一個目錄)。–dest預設值是查看pt-stalk的源碼:
            # Delete collect files which more than --retention-time days old.find "$dir" -warn -type f -mtime +$retention_time -exec rm -f ‘{}‘ \;
–iterations:該參數指定pt-stalk在收集幾次故障現場後就退出。預設pt-stalk會一直運行。–run-time:觸發收集後,該參數指定收集多長時間的資料。預設是30秒,比如show processlist會連續收集30次。–sleep:為防止一直觸發收集資料,該參數指定在某次觸發後,必須sleep一段時候才繼續觀察並觸發收集。預設是300秒–interval:預設情況pt-stalk會每隔一秒檢查一次狀態資料,判斷是否需要觸發收集。該參數指定間隔時間,預設是1秒。–cycles:預設情況pt-stalk只有連續觀察到五次狀態值滿足觸發條件時,才觸發收集。該參數控制,需要連續幾次滿足條件,收集被觸發,預設是5次。–verbose:設定log的輸出層級,預設是2;第一次運行可以設定為3,方便觀察情況。LEVEL PRINTS===== =====================================0     Errors1     Warnings2     Matching triggers and collection info3     Non-matching triggers–plugin:和–function參數類似,可以指定一個包含before_collect、after_collect等函數的shell指令碼。
pt-stalk的觸發條件三種觸發條件,通過參數function設定:
  1. status–function status –variable Threads_connected –threshold 2500,表示MySQL狀態值Threads_connected超過2500時觸發資料收集。常用的觸發條件還可以使用Threads_running等。
  2. processlist
    –function processlist –variable State –match statistics –threshold 10,表示,show processlist中State列的值為statistics的線程數超過10則觸發收集。
  3. 自訂指令碼
    包含 trg_plugin函數的shell指令碼, trg_plugin 函數必須返回一個int值,比如下面的指令碼,因為slow log的status是一個累加值,不能分析差值,因此寫小指令碼來擷取差值,對slow突然出現的尖刺進行分析。
function trg_plugin(){ current_slow=`mysql -uroot -pxxx -P5002 -S/opt/tmp/mysql5002.sock -e"show global status like ‘Slow_queries‘" -B -N|awk ‘{print $2}‘` current_timestamp=`date ‘+%s‘` #when first execute,the last_timestamp is empty if [ ! -e Slow_queries ];then echo "$current_timestamp $current_slow">Slow_queries echo "0" exit 0 fi last_timestamp=`cat Slow_queries|awk ‘{print $1}‘` last_slow=`cat Slow_queries|awk ‘{print $2}‘` echo "$current_timestamp $current_slow">Slow_queries let diff_timestamp=$current_timestamp-$last_timestamp let diff_slow=$current_slow-$last_slow #echo "$diff_timestamp $diff_slow" if [ $diff_timestamp -gt 11 ];then echo "0" else echo $diff_slow fi}


實際例子
pt-stalk --daemonize --function=slow_log_status.sh --variable=my_custemed_condition --cycles=1 --threshold=2 --interval=10 --socket=/opt/tmp/mysql5002.sock --verbose=3


收集結果可以看到收集的資訊非常的全面,包括大量的系統狀態(IO、CPU、網卡)等以及大量MySQL資訊(processlist、innodb status、variables等)

使用pt-stalk分析MySQL的效能波動 (轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.