《阿里價值“千萬”的秒殺場景參數優化》要點:
本文介紹了阿里價值“千萬”的秒殺場景參數優化,希望對您有用。如果有疑問,可以聯系我們。
秒殺最早來自天貓雙11各種商品的促銷活動中,現在已經有很多業務場景在使用,比如搶紅包,搶票等.其特點有三高:瞬時并發高,數據一致性高,熱點更新頻度高.這樣三高的場景下往往給數據庫造成極大的壓力,大量更新數據庫中的同一行,這樣必然會產生鎖等待,導致數據庫的性能急劇下降的問題,很容易出現雪崩效應.筆者記得有一年春節,一個電視臺定時在整點發放紅包,結果由于壓力太高,導致更新數據庫紅包數額的請求全部堆積,業務全部掛掉,面對這樣的情況我們當時也束手無策.
面對秒殺業務的場景,數據庫成為了底層系統中最重要的瓶頸點,阿里經過幾年的沉淀也誕生了很多的技術手段來進行優化,這里我們就重點講一下底層數據所做的優化.當大量的并發更新同一條記錄時,使用排隊的方式來保證高并發下熱點記錄更新依然能保持較好的性能,為threads_running設置一個硬上線,當并發超過此值是,拒絕執行sql,保護MySQL,我們將這個稱之為高水位限流,這樣就給數據庫加上了一層限流的功能,使得數據庫不被瞬間的高爆發請求打爆.
高水位限流實現:
監控系統status變量threads_running,當滿足拒絕條件,拒絕執行sql,返回用戶:MySQL Server is too busy,判斷邏輯在dispatch_command中,sql解析之后.
增加的系統variables:
拒絕必要條件:
以下情況不拒絕:
阿里云的RDS已經集成了阿里秒殺場景下的參數優化,所以如果你的應用場景中具有大量并發更新同一行記錄的場景,你可以打開數據庫的限流參數:threads_running_ctl_mode和threads_running_high_watermark來保護數據庫,讓你的數據庫平穩過渡.下面我們來看一則生產案例.
從上圖中看到該數據庫的活躍連接數最高的時候到達了1W,通過show processlist可以看到大量的并發更新.
我們來看一下數據庫并發更新的TPS有多大:
可以看到數據庫中的活躍連接數非常高,每秒的update非常不穩定.
我們在把限流開關打開后看一下性能表現:
從上圖可以明顯觀察到,通過打開數據庫的限流開關,數據庫的活躍連接數在300左右,同時數據庫的TPS也沒有再出現很大的波動,這樣很好地保護住了DB.
文/羅龍九
玄慚,阿里云資深DBA專家;
有著豐厚的DBA經驗,經歷阿里歷年雙11考驗,保持著“無一丟單”的優異紀錄.同時積累了6年對阿里云數據庫用戶的運維、調優、診斷等豐富的經驗.
文章出處——DBAplus社群微信公眾
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4509.html