這幾天,運營那邊老報app卡頓,大量5**報錯。經過排查,是mysql數據庫卡住了,數據庫錯誤日誌看,有大量以下信息:mysql
企圖修改數據庫選項文件/etc/my.cnf相關的值,來消除問題,效果甚微,修改的兩項以下:sql
interactive_timeout=120數據庫 connect_timeout=120centos |
接着看系統的負載,用top指令,輸出以下:緩存
Load飆升,IO也很異常。查mysql的鏈接數,登陸mysql,用指令 「show processlist;」查看,峯值在300個左右,遠低於設定值3000.服務器
磁盤io爲啥會這麼高呢?莫非是磁盤性能問題?數據庫由一主兩從組成,數據存放在單獨的高效雲盤。仍是來測一下所謂高效雲盤的讀取性能,而後與自有的物理服務器作過對比。app
測試磁盤性能我選用hdparm,最小安裝的centos 7可能沒有這個包,執行指令「yum install hdparm」很容易就安裝上了。負載均衡
² 系統磁盤掛接狀況ide
² 測試本地盤讀取性能性能
速度是103M每秒,多測幾回,減小誤差。
² 高效雲盤讀取性能測試
讀取速度130M每秒的樣子,感受這個速度不是很理想。找一臺自有的線上物理服務器進行對比測試,sas盤,15000轉容量爲600G的系統。
² 物理機磁盤情況
² 物理機系統磁盤讀取測試
平均400M每秒鐘。
² 物理機數據盤讀取測試
每秒鐘讀取速度390M。
所謂高效雲盤,才100多M每秒,差距好大呢!再試試高效雲盤加緩存方式的讀取,獲得以下的輸出:
由此能夠大體推斷,所謂的高效雲盤,極可能是sata垃圾盤,前邊加ssd緩存,我呸!!經阿里雲早期實施工程師確認,還真是這樣啊!
處理思路及步驟:
從負載均衡摘除任意一臺從數據庫mysql,掛接雲ssd磁盤,把數據庫的數據目錄完整的複製到ssd的掛接點,重啓數據庫並同步數據庫。
經過討論,決策人贊成採購一塊ssd雲盤,用來作對比。一切準備就緒,數據庫主從同步完畢,加入負載均衡,把應用程序的請求轉發過來,負載的對比差別還至關明顯。
採用雲ssd磁盤的負載狀況
原高效雲盤的負載狀況
在用hdparm測試,雲ssd卻如官網所宣,能到200多兆的速度;再看數據庫錯誤日誌,採用雲ssd的不在瘋狂滾屏。