Linux

如何調查 MySQL 吞吐量的峰值?

  • April 27, 2012

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

在此處輸入圖像描述

在此處輸入圖像描述

同樣從下圖中,您可以看到MySQL throughput已達到異常高的值,遠不及之前達到的任何其他值:

在此處輸入圖像描述

對於我們應該如何進行,我們完全一無所知,因此下面的問題是:

如何對 MySQL 吞吐量增加進行“事後”調查?

具有巨大結果集的查詢會導致這樣的峰值,而不會看到查詢量的相應增加。你有任何磁碟 I/O 監控嗎?如果這是由查詢引起的,那也應該有一個很大的峰值。

general_log不幸的是,沒有啟用就很難進行事後檢查。錯誤日誌不會顯示成功執行的查詢。

展望未來,我為解決這些問題所做的就是保留一個查詢日誌視窗。啟用general_log並設置 logrotate 以保留簡短的查詢歷史記錄。如果這對性能過於密集,您還可以嘗試使用 mk-query-digest 之類的工具和 tcpdump 來擷取查詢。

引用自:https://serverfault.com/questions/381046