7月中旬,騰訊云7 24h售后支持群收到來自X-Girl(化名)客戶的消息,客戶直呼咱家數(shù)據(jù)庫幫大忙了,想要親自感謝騰訊云MySQL團(tuán)隊(duì)。
誒?怎么回事呢?
關(guān)于X-Girl
X-Girl是一家線上線下同時(shí)運(yùn)營的女裝店,既從廠家拿貨轉(zhuǎn)售給各大渠道商,又同時(shí)經(jīng)營自家店鋪。為方便自家店鋪的經(jīng)營以及渠道商的下單,訂單交易從原來的微信溝通轉(zhuǎn)移至網(wǎng)店、小程序等。X-Girl公司擁有一名懂技術(shù)的人員,但是也不太熟悉數(shù)據(jù)庫,因此早在建站初期就加入了騰訊云數(shù)據(jù)庫7 24h售后支持群,平時(shí)運(yùn)維管理也很輕松。
原來,在7月初X-Girl客戶家的一款小黑裙突然爆紅,網(wǎng)店、小程序等訪問量飆升,但這次的爆紅跟之前的爆紅可不一樣,系統(tǒng)歲月靜好,仿佛無事發(fā)生。之前突然出現(xiàn)爆款產(chǎn)品時(shí)會(huì)頁面卡頓、訪問崩潰,本來都做好了和渠道商挨個(gè)解釋的準(zhǔn)備,這次居然都沒有?這成功引發(fā)了DBA的好奇心,經(jīng)過復(fù)盤,破案了。
原來半個(gè)月前DBA看到控制臺(tái)上更新了“CPU彈性擴(kuò)容”的新功能,開啟不收費(fèi),觸發(fā)之后才開始收費(fèi),想到曾經(jīng)CPU利用率打到90%的刺激經(jīng)歷,于是DBA決定試試,萬一呢?命運(yùn)的齒輪開始轉(zhuǎn)動(dòng)……
咱家的CPU彈性擴(kuò)容功能是6月28日上線的,X-Girl因?yàn)殚L期使用控制臺(tái)關(guān)注到了這個(gè)更新,第一時(shí)間就買定離手。巧的是,7月初小黑裙頻登熱搜,原廠同款小黑裙早已斷貨,X-Girl的同類型小黑裙因價(jià)格實(shí)惠被渠道商和散客瘋搶。CPU彈性擴(kuò)容就這樣派上了大用場。
來吧,有了CPU彈性擴(kuò)容,再“爆”都不帶怕的!
那么CPU彈性擴(kuò)容究竟是個(gè)啥?本期就讓小編帶您走進(jìn)CPU的世界。
為什么推出CPU彈性擴(kuò)容?
總結(jié)起來就幾句話——“應(yīng)客戶之訴求,防CPU之風(fēng)險(xiǎn),解升配之困難,降客戶之成本”,幫助客戶彈得更快更穩(wěn)的同時(shí),還更便宜。
眾所周知,業(yè)務(wù)存在高峰低谷,多數(shù)情況下客戶選擇一個(gè)配置就要持續(xù)為其付費(fèi),無論高峰無論低谷。“高峰前我們升配真的很難,而且高峰并不好預(yù)測,有沒有辦法實(shí)現(xiàn)短時(shí)間快速把計(jì)算資源升上去呢?還有,低峰期我用不上這么高規(guī)格的實(shí)例,成本真的很高”,大客戶向騰訊云MySQL團(tuán)隊(duì)訴苦,并期望能盡快給出解決方案。CPU彈性擴(kuò)容功能就是這么來的。
CPU彈性擴(kuò)容功能的必要性其實(shí)無需評(píng)估也知道,客戶害怕CPU被打爆,CPU也容易被打爆,尤其在降本的時(shí)代,能用小規(guī)格客戶就會(huì)使用小規(guī)格。一旦出現(xiàn)突發(fā)流量、死鎖、慢查詢、高并發(fā)等情況,服務(wù)就會(huì)有不可用的風(fēng)險(xiǎn)。
一旦發(fā)現(xiàn)CPU被打爆或者預(yù)測流量高峰即將到來,客戶的第一反應(yīng)一定是“趕緊升配”。現(xiàn)網(wǎng)變配時(shí)長會(huì)受到數(shù)據(jù)量的影響,導(dǎo)致等待時(shí)長不定,同時(shí)升配過程中可能會(huì)出現(xiàn)閃斷情況,影響業(yè)務(wù)正常運(yùn)行。
CPU彈性擴(kuò)容功能的原理非常好理解,當(dāng)數(shù)據(jù)庫訪問量增加或CPU資源占用率上升時(shí),CPU資源彈起來,并在高峰期結(jié)束后自動(dòng)縮回去。那么CPU彈性擴(kuò)容是怎么幫助客戶節(jié)省成本的呢?很簡單,就是客戶只為業(yè)務(wù)高峰付費(fèi),無須為業(yè)務(wù)低峰期付費(fèi)。我們一起來算一筆賬:
假設(shè)客戶使用北京地域32C 256G通用型三節(jié)點(diǎn),每天高峰期合計(jì)1h,其余23h為低峰期。我們就按照當(dāng)天升配的情況,配置升級(jí)至48C 488G使用24小時(shí)需額外付費(fèi)(207.4-108.8) 24=2366.4元,而使用CPU彈性擴(kuò)容僅需額外支付32 0.81 1=25.92元。也就是說,在該情況下一天節(jié)省2340.48元,成本降低98.9%。
怎么彈?
CPU彈性擴(kuò)容功能基于云環(huán)境優(yōu)勢,實(shí)現(xiàn)動(dòng)態(tài)分配CPU資源。用戶可在控制臺(tái)上選擇是否開啟CPU彈性擴(kuò)容功能,根據(jù)業(yè)務(wù)的需求和業(yè)務(wù)量動(dòng)態(tài)地配置數(shù)據(jù)庫的CPU資源,從而完成彈性擴(kuò)展,應(yīng)對(duì)高峰壓力,確保數(shù)據(jù)庫實(shí)例的高性能、高可用性和高穩(wěn)定性。
CPU彈性擴(kuò)容功能分為【自動(dòng)擴(kuò)容】與【手動(dòng)擴(kuò)容】兩種類型,其中:
自動(dòng)擴(kuò)容:用戶自行設(shè)置擴(kuò)容閾值和觀測周期,默認(rèn)擴(kuò)容1倍核數(shù),當(dāng)實(shí)例CPU達(dá)到閾值超過觀測周期時(shí),擴(kuò)容功能生效。相同地,當(dāng)實(shí)例CPU達(dá)到縮容閾值超過觀測周期時(shí),縮容功能生效,期間無需客戶做其他操作。
手動(dòng)擴(kuò)容:手動(dòng)擴(kuò)容可選擇擴(kuò)容核數(shù),支持1核單位擴(kuò)容,最高支持1倍核數(shù)。當(dāng)用戶開啟手動(dòng)擴(kuò)容成功時(shí),實(shí)例按照擴(kuò)容后的CPU核數(shù)運(yùn)行。當(dāng)業(yè)務(wù)無需更多CPU資源時(shí),需手動(dòng)關(guān)閉CPU彈性擴(kuò)容,否則收費(fèi)會(huì)持續(xù)進(jìn)行。
CPU彈性擴(kuò)容功能流程圖
用實(shí)驗(yàn)數(shù)據(jù)說話
功能操作簡單又效果明顯,真的那么好使嗎?一起來做個(gè)對(duì)比實(shí)驗(yàn)看看吧!
批量購買3個(gè)北京七區(qū)通用型2C 4G雙節(jié)點(diǎn)云數(shù)據(jù)庫MySQL實(shí)例,分別為:
A組:NO-CPU-Expand,不開啟CPU彈性擴(kuò)容功能
B組:AUTO-CPU-Expand,開啟CPU彈性自動(dòng)擴(kuò)容功能,CPU利用率超70%1min則觸發(fā)自動(dòng)擴(kuò)容,CPU利用率低于30%5min則觸發(fā)自動(dòng)回縮;
C組:MANUAL-CPU-Expand,開啟CPU彈性手動(dòng)擴(kuò)容功能,擴(kuò)容核數(shù)為2核;
Tips:建議提前設(shè)置max_prepared_stmt_count參數(shù)為最高值,應(yīng)對(duì)高并發(fā)。
sysbench準(zhǔn)備數(shù)據(jù),單表10w數(shù)據(jù)量,10張表:
sysbench–-db-driver=mysql–-mysql-host=xxx–-mysql-port=xxxx–-mysql-user=xxx–-mysql-password=‘XXXXXXXXXX’–-mysql-db=sbtest-–table_size=100000–-tables=10–-events=0–-time=XXX–-threads={X,Y}oltp_read_write prepare
sysbench運(yùn)行高并發(fā):
sysbench--db-driver=mysql--mysql-host=xxx--mysql-port=xxxx--mysql-user=xxx--mysql-password=‘XXXXXXXXXX’--mysql-db=sbtest--table_size=100000--tables=10--events=0--time=XXX--threads={X,Y}--percentile=95--report-interval=1 oltp_read_write run
如下圖所示,在三組CPU彈性擴(kuò)容功能的對(duì)比實(shí)驗(yàn)結(jié)果中,我們可以看到:
第一階段:21:03開啟數(shù)據(jù)注入,NO-CPU-Expand和AUTO-CPU-Expand的CPU利用率打到70%以上,但時(shí)長未超過1min。因此,AUTO-CPU-Expand組未觸發(fā)自動(dòng)擴(kuò)容功能;而,MANUAL-CPU-Expand一開啟即擴(kuò)容,已經(jīng)是4核運(yùn)行狀態(tài),CPU利用率不到50%。
第二階段:21:07開啟高并發(fā)測試,NO-CPU-Expand的CPU利用率始終在70%以上,AUTO-CPU-Expand的CPU利用率在70%以上超過1min時(shí)觸發(fā)了自動(dòng)擴(kuò)容,秒級(jí)擴(kuò)容成功,利用率降低至50%以下;MANUAL-CPU-Expand的CPU利用率始終保持在50%以下。
對(duì)比實(shí)驗(yàn)--CPU利用率變化情況
除了CPU利用率有顯著變化外,開啟彈性擴(kuò)容功能的實(shí)例性能表現(xiàn)同樣明顯(畢竟多了一倍核),如下圖所示,開啟彈性擴(kuò)容功能的TPS、QPS均高于未開啟的實(shí)例。
注意:測試的性能表現(xiàn)與測試時(shí)段、時(shí)長、機(jī)器等因素有一定的關(guān)系,建議多次測試對(duì)比結(jié)果。
對(duì)比實(shí)驗(yàn)--TPS、QPS性能表現(xiàn)
這么好用,貴不貴?
如上文所述,CPU彈性擴(kuò)容分為自動(dòng)擴(kuò)容和手動(dòng)擴(kuò)容兩種類型,不同類型其收費(fèi)邏輯是不同的。
自動(dòng)擴(kuò)容彈多少計(jì)多少,不彈不計(jì)費(fèi),可以完美實(shí)現(xiàn)“無需為低峰付費(fèi)”這一理念。也就是說即便我們早早的在控制臺(tái)開啟了自動(dòng)擴(kuò)容,并不是馬上就開始計(jì)費(fèi)的,而是成功觸發(fā)了擴(kuò)容條件之后,才開始計(jì)費(fèi)。縮容也是如此,成功縮容后收費(fèi)停止,客戶無需在控制臺(tái)上點(diǎn)擊關(guān)閉。
注:為避免出現(xiàn)持續(xù)間歇高峰的影響,在自動(dòng)擴(kuò)容時(shí)存在最短保護(hù)時(shí)間,為10min。即整個(gè)自動(dòng)擴(kuò)容過程小于等于10min時(shí),按照10min收費(fèi),大于10min時(shí),按照實(shí)際使用時(shí)間收費(fèi)。
手動(dòng)擴(kuò)容則是開啟功能即計(jì)費(fèi)開始,關(guān)閉功能即計(jì)費(fèi)結(jié)束。所以選擇使用手動(dòng)擴(kuò)容的客戶可要注意咯,一定要記得手動(dòng)關(guān)閉哦。
同樣的,我們拿上述實(shí)驗(yàn)做個(gè)計(jì)費(fèi)說明,如下圖所示,我們可以看出:
AUTO-CPU-Expand在21:07時(shí)CPU利用率達(dá)到70%以上,在21:08時(shí)觀測時(shí)長超過1min,成功觸發(fā)自動(dòng)擴(kuò)容,此時(shí)計(jì)費(fèi)開始。縮容觀測周期為5min,小于最短保護(hù)時(shí)間(10min),因此實(shí)例在21:18觸發(fā)自動(dòng)擴(kuò)容關(guān)閉,此時(shí)計(jì)費(fèi)結(jié)束。因此,AUTO-CPU-Expand計(jì)費(fèi)周期為21:08--21:18,時(shí)長為10min,最終花費(fèi)0.18元。
MANUAL-CPU-Expand在20:52時(shí)手動(dòng)開啟,此時(shí)計(jì)費(fèi)開始。功能在21:26手動(dòng)結(jié)束,此時(shí)計(jì)費(fèi)結(jié)束。整個(gè)手動(dòng)擴(kuò)容過程時(shí)長34.09min,最終花費(fèi)0.61元。
對(duì)比實(shí)驗(yàn)--功能計(jì)費(fèi)說明
相信不用比較大家也能很清楚,開啟自動(dòng)擴(kuò)容一定是個(gè)絕佳的降本選擇。
都看到這兒了,不試試?
綜上,騰訊云MySQL推出的CPU彈性擴(kuò)容功能,支持根據(jù)設(shè)定的CPU平均使用率閾值和觀測周期進(jìn)行自動(dòng)擴(kuò)縮容,也可以支持手動(dòng)擴(kuò)展當(dāng)前實(shí)例的CPU上限,能更好的緩解突發(fā)請(qǐng)求帶來的性能壓力,適配業(yè)務(wù)高峰流量,保障線上業(yè)務(wù)穩(wěn)定性。未來,騰訊云MySQL還將繼續(xù)優(yōu)化該功能的設(shè)計(jì),推出獨(dú)享型實(shí)例CPU彈性、自定義擴(kuò)容時(shí)間等功能,完善事件告警策略,給到客戶更優(yōu)體驗(yàn)。如果您想深入了解該功能,歡迎進(jìn)入騰訊云MySQL產(chǎn)品文檔主頁,查看CPU彈性擴(kuò)容的全面攻略。