Mysql

調查 MySQL 吞吐量的峰值

  • May 18, 2012

最近我們的一台伺服器記憶體不足並崩潰了。查看munin圖表後,似乎在崩潰前達到峰值的唯一指標(記憶體使用率除外)是MySQL throughput. 然而,我們預計會看到相應的增加數量MySQL queries並沒有發生:

在此處輸入圖像描述 在此處輸入圖像描述

我們想找出導致 MySQL 吞吐量達到峰值的原因。以下是崩潰中的 bin 日誌列表:

101M Apr 17 01:27 drupal_master-bin.001270
106M Apr 17 03:00 drupal_master-bin.001271
101M Apr 17 04:05 drupal_master-bin.001272
104M Apr 17 05:53 drupal_master-bin.001273
104M Apr 17 06:39 drupal_master-bin.001274
101M Apr 17 07:02 drupal_master-bin.001275
104M Apr 17 07:22 drupal_master-bin.001276  # 100M filled up in 1 min
106M Apr 17 07:23 drupal_master-bin.001277
101M Apr 17 07:33 drupal_master-bin.001278
101M Apr 17 07:43 drupal_master-bin.001279
104M Apr 17 07:46 drupal_master-bin.001280
102M Apr 17 08:29 drupal_master-bin.001281
102M Apr 17 08:46 drupal_master-bin.001282
105M Apr 17 08:54 drupal_master-bin.001283
13M Apr 17 09:26 drupal_master-bin.001284  # crash of server around 09:50
# prior to crashing load went very high (we saw 45) and server was extremely slow (few min delay when typing in an SSH session)
101M Apr 17 10:54 drupal_master-bin.001285  # server up again, nothing wrong since then

我一直在尋找分析這些 bin 日誌的工具。到目前為止,我發現:

binlog-analyze.pl:給我處理的查詢的概述,在select, insert, update.. 上進行細分(僅供參考,我在腳本中替換select intoselect,因為它似乎是錯誤的)。

$ mysqlbinlog /path/to/bin.log | binlog-analyze.pl -v

pt-query-digest:給我關於查詢大小的統計資訊(最小,最大,平均……)。該實用程序有很多選擇,但我不知道要尋找什麼。

$ mysqlbinlog /path/to/bin.log | pt-query-digest

我們想知道是哪些查詢導致 MySQL 輸出增加。

有人可以指導如何查看 MySQL bin 日誌以辨識導致 MySQL 吞吐量突然增加的查詢嗎?

分析二進制日誌可能無法為您提供準確的圖片,因為二進制日誌包含已完成並插入二進制日誌(如 FIFO 隊列)的查詢。

您真正需要尋找的是主動執行查詢的直方圖是什麼樣的。換句話說,您需要擷取程序列表,以揭示特定情況出現時哪些查詢和性能如何。

我強烈推薦使用 pt-query-digest 但你需要以不同的方式使用它。讓查詢摘要處理二進制日誌條目,讓它處理程序列表 LIVE !!!

我寫了一篇過去的文章(2011 年 11 月 24 日)關於如何使用pt-query-digest(我的文章使用mk-query-digest)作為慢查詢日誌的替代品(我已經發布了我使用的實際腳本以及如何讀取查詢摘要輸出):MySQL 一般查詢日誌的性能影響我過去的文章基於一個 YouTube 影片,展示瞭如何做到這一點。我只是簡單地使用mk-query-digest模擬自己。

引用自:https://dba.stackexchange.com/questions/16950