資料庫層面
一:檢查問題常用工具
1:msyqladmin:mysql客戶端,可進行管理操作
2:mysqlshow:功能強大的檢視shell命令
3:show [session | global] variables:檢視資料庫引數資訊
4:show [session | global] status:檢視資料庫的狀態資訊
5:information_schema:獲取元資料的方法
6:show engine innodb status:innodb引擎的所有狀態
7:show processlist:檢視當前所有連線session狀態
8:explain:獲取查詢語句的執行計畫
9:show index:檢視表的索引資訊
10:slow-log:記錄慢查詢語句
11:mysqldumpslow:分析slowlog檔案的
二:解決思路
一般應急調優的思路:針對突然的業務辦理卡頓,無法進行正常的業務處理,需要立馬解決的場景
1:show processlist;
2:explain select id ,name from stu where name='clsn'; # all id name age ***;
select id,name from stu where id=2-1 函式 結果集》30;show index from table;
3:通過執行計畫判斷,索引問題(有沒有、合不合理)或者語句本身問題;
4:show status like '%lock%'; # 查詢鎖狀態
kill session_id; # 殺掉有問題的session。
常規調優思路:針對業務週期性的卡頓,例如在每天10-11點業務特別慢,但是還能夠使用,過了這段時間就好了。
1:檢視slowlog,分析slowlog,分析出查詢慢的語句;
2:按照一定優先順序,乙個乙個排查所有慢語句;
3:分析top sql,進行explain除錯,檢視語句執行時間;
4:調整索引或語句本身。
系統層面
一:檢查問題常用工具
cpu方面:vmstat、sar top、htop、nmon、mpstat;
記憶體:free、ps-aux;
io裝置(磁碟、網路):iostat、ss、netstat、iptraf、iftop、lsof;
vmstat命令說明:
1)procs:r顯示有多少程序正在等待cpu時間。b顯示處於不可中斷的休眠的程序數量。在等待i/o。
2)memory:swpd顯示被交換到磁碟的資料塊的數量。未被使用的資料塊,使用者緩衝資料塊,用於作業系統的資料塊的數量。
3)swap:作業系統每秒從磁碟上交換到記憶體和從記憶體交換到磁碟的資料塊的數量。s1和s0最好是0。
4)io:每秒從裝置中讀入b1的寫入到裝置b0的資料塊的數量。反映了磁碟i/o。
5)system:顯示了每秒發生中斷的數量(in)和上下文交換(cs)的數量。
6)cpu:顯示用於執行使用者**,系統**,空閒,等待i/o的cpu時間。
iostat命令說明:
例項命令:iostat -dk 1 5
iostat -d -k -x 5 (檢視裝置使用率(%util)和響應時間(await))
1)tps:該裝置每秒的傳輸次數。「一次傳輸」意思是「一次i/o請求」。多個邏輯請求可能會被合併為「一次i/o請求」。
2)iops :硬體出廠的時候,廠家定義的乙個每秒最大的io次數
3)"一次傳輸"請求的大小是未知的。
4)kb_read/s:每秒從裝置(drive expressed)讀取的資料量;
5)kb_wrtn/s:每秒向裝置(drive expressed)寫入的資料量;
6)kb_read:讀取的總資料量;
7)kb_wrtn:寫入的總數量資料量;這些單位都為kilobytes。
二:系統層面問題解決辦法
你認為到底負載高好,還是低好呢?在實際的生產中,一般認為cpu只要不超過90%都沒什麼問題。
當然不排除下面這些特殊情況:
cpu負載高,io負載低
1)記憶體不夠;
2)磁碟效能差;
3)sql問題--->去資料庫層,進一步排查sql 問題;
4)io出問題了(磁碟到臨界了、raid設計不好、raid降級、鎖、在單位時間內tps過高);
5)tps過高:大量的小資料io、大量的全表掃瞄。
io負載高,cpu負載低
1)大量小的io寫操作:
autocommit,產生大量小io;io/ps,磁碟的乙個定值,硬體出廠的時候,廠家定義的乙個每秒最大的io次數。
2)大量大的io 寫操作:sql問題的機率比較大
io和cpu負載都很高
硬體不夠了或sql存在問題。
「奇怪」問題解決思路整理
處理過各種各樣的 奇怪 問題,當然一般的問題,也不會找我處理 雖然每個問題最終產生的原因有各種各樣,但還是有些套路可以整理的 可以從以下幾個方面入手 準確描述問題現象,很重要。以下幾個點可以捋一下 1.現象能否重現?在什麼條件可以出現?重現頻率 分 極少出現,偶爾出現,頻繁出現,100 出現 2.出...
快取擊穿問題解決思路
後端分布式快取是 服務端經常用到的一種技術,在讀多寫少的業務場景中,通過使用快取可以有效地支撐高併發的訪問量,對後端的資料庫等資料來源做到很好地保護。現在市面上有很多分布式快取,比如redis memcached以及阿里的tair等,不管我們使用的哪種快取產品,基本上都會遇到快取擊穿 快取失效以及熱...
「奇怪」問題解決思路整理
處理過各種各樣的 奇怪 問題,當然一般的問題,也不會找我處理 雖然每個問題最終產生的原因有各種各樣,但還是有些套路可以整理的 可以從以下幾個方面入手 準確描述問題現象,很重要。以下幾個點可以捋一下 1.現象能否重現?在什麼條件可以出現?重現頻率 分 極少出現,偶爾出現,頻繁出現,100 出現 2.出...