診斷間歇性問題
間歇性的問題比如系統偶爾停頓或者慢查詢很難診斷有些幻影問題只在沒有注意到的時候才發生而且無法確認如何重現診斷這樣的問題往往要花費很多時間有時候甚至需要好幾個月在這個過程中有些人會嘗試以不斷試錯的方式來診斷有時候甚至會想要通過隨機地改變一些服務器的設置來僥幸地找到問題
盡量不要使用試錯的方式來解決問題這種方式有很大的風險因為結果可能變得更壞這也是一種令人沮喪且低效的方式如果一時無法定位問題可能是測量的方式不正確或者測量的點選擇有誤或者使用的工具不合適(也可能是缺少現成的工具我們已經開發過工具來解決各個系統不透明導致的問題包括從操作系統到MySQL 都有)
為了演示為什麼要盡量避免試錯的診斷方式下面列舉了我們認為已經解決的一些間歇性數據庫性能問題的實際案例
應用通過curl 從一個運行得很慢的外部服務來獲取匯率報價的數據
memcached緩存中的一些重要條目過期導致大量請求落到MySQL 以重新生成緩存條目
DNS 查詢偶爾會有超時現象
可能是由於互斥鎖爭用或者內部刪除查詢緩存的算法效率太低的緣故MySQL 的查詢緩存有時候會導致服務有短暫的停頓
當並發度超過某個阈值時InnoDB 的y 擴展性限制導致查詢計劃的優化需要很長的時間
從上面可以看到有些問題確實是數據庫的原因也有些不是只有在問題發生的地方通過觀察資源的使用情況並盡可能地測量出數據才能避免在沒有問題的地方耗費精力
下面不再多費口舌說明試錯的問題而是給出我們解決間歇性問題的方法和工具這才是王道
返回目錄高性能MySQL
編輯推薦
ASP NET開發培訓視頻教程
數據倉庫與數據挖掘培訓視頻教程
Oracle索引技術
From:http://tw.wingwit.com/Article/program/MySQL/201311/29704.html