mysql的監控和排錯

2021-08-08 03:18:00 字數 2197 閱讀 6175

一  收集手段:

既然出了問題,首先要進行資料問題的收集,所以做好mysql平時資料收集的準備,已方便作為排查問題的手段

1 慢日誌的開啟(強烈建議),慢日誌記錄的sql語句對於排查大部分問題相當有幫助,和研發聯絡討論也有了根據,是非常必要的。可以用lepus的慢日誌切割指令碼,按照小時進行切割檔案,方面檢視。然後進行遠端插入到資料庫進行備份。被切割的慢日誌進行定期刪除

2 processlist的收集(建議),對於processlist的收集為每分鐘,可能語句執行很快不會記錄,但是對於檢視當時執行的情況依然會有幫助,尤其是執行的耗時等待

3 對於一些全域性變數的把握收集,並繪製成圖表,用於展示資料庫的一些效能變化。推薦引數(thread_running,thread_wait,qps,tps,open_tables) 收集你認為對資料庫影響的效能引數

4 對於linux伺服器本身的監控包括 cpu,io,network,流量和raid磁碟陣列的監控情況(尤其注意硬碟成員是否健康和raid卡電池的充放電,否則可能導致效能問題甚至down機)

總結:針對以上的監控資料的收集,我們的情況是check_mk(一款新型監控軟體)搭配天兔(二次開發)綜合監控,check_mk用以彌補天兔對於硬體資源監控的不足,推薦各位可以採用天兔和zabbix監控,都是比較成熟的產品。

二 解決思路

說完了收集手段,咱們來說解決問題的思路,本文只針對作者本身遇到的一些情況,特殊的情況不在考慮範圍內

資料庫問題分為兩類

1 已經發生過的

情景:xx研發詢問,在某個時間段內程式有問題,詢問是否某個庫有效能問題。

思考方式 :

1 首先要確保監控資料在手

2 第一步檢視linux的負載和io是否在這段時間內有較大波動,硬體是否在短暫故障問題

3 第二步檢視mysql的慢日誌在這段時間的慢日誌進行統計分析,歸納。假如出現大量相同的sql慢日誌,進一步explain分析,定位問題,進行優化

4 第三步檢視mysql的dml統計曲線圖,檢視這個時間段的qps和tps操作是否較大波動,分析是否由較大併發導致

核心思想 慢日誌+併發+磁碟狀態+記憶體狀態

2 正在發生的

1 分析指令碼

show full processlist"|grep -v 'sleep'|sed 's/\\n//g'|sed 's/\\t//g'|sed 's/[ ][ ]*/ /g'|awk '$6 > 10 '  過濾當前執行時間大於10s的session

select count(*)from information_schema.processlist where info is not null; 過濾統計當前thread_running的個數

select count(*)from information_schema.processlist where info is not null; 過濾統計當前每個db的訪問session個數

select * from information_schema.innodb_locks;

select * from information_schema.innodb_locks_wait ;過濾統計當前 持有鎖和鎖等待的事物

2 觀察linux本身的記憶體 和io情況

free -m 觀測可用記憶體和swap應用情況

iostat -d  -x -k 2 觀測磁碟組 以下指標(tps,util,iowait)

cpu 耗時 

根據 1和2 的處理進行分析

三 總結:

1 測試環境下 某個介面由於程式有問題,頻繁呼叫,導致伺服器負載出現飆公升。這是由於併發導致的效能問題,和研發聯絡後恢復正常

2 生產環境下 某個innodb表由於聯合主鍵的問題(需要去掉 然後重新新增),導致大量查詢sql變慢,由於慢查詢所引起的查詢堆積,導致業務部可用,和研發聯絡後,增加自增列作為主。這是典型因為慢查詢堆積所引起的效能問題 

3 生產環境下 某個表(myisam引擎),併發量大 導致出現大量table lock等待,和研發聯絡後,轉為innodb引擎,業務變快,效能恢復正常,這是由於引擎設定不當所引起的問題

4 生產環境下 某些sql語句對於一張2000萬的表進行掃瞄,雖然走了索引,但是不是最優,優化後效能提公升,選擇合適的索引是非常重要的

我所遇到的mysql效能問題 大部分都是 1 併發太大 2 慢查詢所引起的sql堆積 3 非innodb引擎 4 不合適的索引 5 對大表進行拆分

以上為我的遇到的一些案例和感悟,請諸君點評

原文出處:

zabbix監控軟體的使用排錯

對服務的監控也沒有影響,最後查了半天才知道問題的原因。解決方法如下 data www wwwroot zabbix conf下有乙個zabbix.conf.php 這是我的路徑,你的不一定在這個位置哦 修改zabbix.conf.php 配置檔案中的 zbx server欄位為 伺服器的ip位址 預...

mysql監控和建議服務 mysql的監控及優化

1.資料庫的用途 寫資料和讀資料 2.查詢語句的生命週期 1 mysql伺服器監聽3306埠 2 驗證訪問使用者 3 建立mysql執行緒 4 檢查記憶體 qcache 5 解析sql 6 生成查詢計畫 7 開啟表 8 檢查記憶體 buffer pool 9 到磁碟取資料 10 寫入記憶體 11 返...

MySQL排錯記錄

vim etc default grub possible cpus 8 grub2 mkconfig o boot grub2 grub.cfg 每條mysql語句都會記錄 set global general log on tail f var lib mysql localhost.log s...