小白工作十載,創(chuàng)業(yè)數(shù)年,玩云計算3年有余。面對如今互聯(lián)網(wǎng)+和云計算大行其道,一時興起,中國的云廠商(百家混戰(zhàn))和洋廠商(如AWS、Azure)做了一番比較。
本次比較不是看臉,重在測試性能,小白想給大家分享一些經(jīng)驗(和教訓(xùn))。
由于八年來小白一直奮戰(zhàn)在性能測試領(lǐng)域,所以覺得有些基本概念首先需要理清楚:
性能&穩(wěn)定性之我見
世俗說的“性能”,Performance,這是一個已經(jīng)被玩壞的概念,不管是國內(nèi)、還是國外。
其實,Performance(性能)的真實定義包含了Performance(性能) + Stability(穩(wěn)定性)兩個東東:
1、性能 = 性能 (第1天的成績) + 穩(wěn)定性 (后面364天的成績)
“性能”其實只是第1天我們?nèi)ピu測一個產(chǎn)品的時候,拿個工具來跑個分?jǐn)?shù)(大家是不是對身邊這樣的事情感同身受?),看看孰優(yōu)孰劣,此時立馬下結(jié)論未免有些唐突。因為,我們只看到了這個產(chǎn)品一瞬間(短期內(nèi))的性能表現(xiàn)。
“穩(wěn)定性”呢,其實可以說全名叫“性能穩(wěn)定性”,表明的是這個產(chǎn)品能否在長時間一直保持好成績,還是會時好時壞、忽高忽低,不管是幾小時還是幾分鐘或幾秒鐘的抖動。
2、性能 = 裸機(jī)性能 vs 實際性能
有不少身邊的人,包括我之前,都會“盲目”地下載些所謂的測試程序,去各家虛擬機(jī)上跑個分,然后不分青紅皂白就下定論(純看CPU、內(nèi)存、磁盤I/O分?jǐn)?shù)高低)。其實不然,實際使用情況會很不一樣。
舉個栗子:一臺i3和i7的筆記本評分肯定有差別,但跑一個游戲的時候很可能感覺不到任何差別。
純看評分的話,小米還比iPhone強(qiáng)呢。
性能&穩(wěn)定性之我測
下面小白把實際測試結(jié)果跟大家分析一下:
云主機(jī)實際應(yīng)用性能
場景一:云主機(jī)搭載MySQL(最常用情況)
▲
▲
如圖,挑選了4家國內(nèi)廠商,金山云和阿里云表現(xiàn)差不多(阿里云是出乎我意料的,因為很久之前單給I/O跑分的時候阿里云的I/O表現(xiàn)并不算太好),而UCloud要比金山云和阿里云差20%,這也是出乎我意料的,因為UCloud的I/O性能是比較突出的。
仔細(xì)想想,小白分析出很重要的一點是,在這種實際應(yīng)用場景下,是一個綜合考量,CPU、內(nèi)存、磁盤I/O都會結(jié)合應(yīng)用,數(shù)據(jù)庫的實際使用如果大量走I/O的話一定是code有問題了,通常很多熱數(shù)據(jù)都是在內(nèi)存里的,所以與I/O的關(guān)系不是最大。
場景二:云主機(jī)搭載MongoDB(次常用情況)
▲
如上圖所示,金山、UCloud、阿里云基本旗鼓相當(dāng),青云和華為云落后高達(dá)40%左右,其背后的原因同上。
云主機(jī)基礎(chǔ)性能測試
所謂的基礎(chǔ)性能,就是指單單給CPU、內(nèi)存、I/O測試性能,雖然在我看來還是low了點,畢竟處于嚴(yán)謹(jǐn)性的目的還是要搞一把的。
當(dāng)然,小白這里將列舉性能、穩(wěn)定性兩個方面:
先告知一下,用的工具是sysbench和ubench,都玩了,以防因工具不同出現(xiàn)偏差。
穩(wěn)定性的話是將云服務(wù)器持續(xù)不斷跑了7天以上,這個就很有意思,有些廠商會因為時間段的關(guān)系出現(xiàn)周期性的大幅差異(抖動),有些廠商即使在長期看似平穩(wěn),但每時每刻的抖動幅度卻很大,能不能接受這類抖動真的見仁見智了,反正我做的項目對于穩(wěn)定性要求比較高,不能影響客戶體驗。
性能上,其實很多玩計算機(jī)的人都明白,CPU真的差10%-15%之間,或者內(nèi)存差10%-15%之間,在跑應(yīng)用時是基本感覺不出來差別的。就好比iPhone 6比iPhone 5s硬件要好,難道玩憤怒的小鳥的時候,用iPhone 6那只鳥還能飛快一點嗎?所以CPU和內(nèi)存差15%之內(nèi),對于選機(jī)器而言,基本是無所謂的。但磁盤性能其實是有感覺的,理由很簡單,一臺裝SSD的筆記本開機(jī)肯定比SATA盤的筆記本快。
穩(wěn)定性上,無論是CPU、內(nèi)存、還是磁盤,都是有強(qiáng)烈感覺的!好比忽高忽低的心跳,誰能受得了。前一秒應(yīng)用的體驗還非常好,后一秒就卡了,相信很多人都碰到過類似經(jīng)驗。
注意一下,穩(wěn)定性的值小白采用的是統(tǒng)計學(xué)上常用的Correlation值,中文應(yīng)該叫離散度,Correlation= Sigma / Mean,即離散度 = 標(biāo)準(zhǔn)差/平均值。這是一個不帶單位的數(shù)值,可以與任何東西比較離散程度。該值越小越好,基本上世面上大多采用的是0.02,即小于0.02的都被認(rèn)為是非常平穩(wěn),比0.02大的就屬于心律不齊了。例如0.04甚至是0.1,如果把長期的數(shù)據(jù)點plot出來,會是一張很恐怖很血腥的滴血圖……
不說了,上圖,高能預(yù)警!!
▲穩(wěn)定性-CPU
▲性能-CPU
▲穩(wěn)定性-內(nèi)存
▲性能-內(nèi)存
▲穩(wěn)定性-磁盤
▲性能-磁盤1
▲性能-磁盤2
CPU性能方面,大家可以看到AWS雖然排名第一,但是比其它人家也就好10%樣子,內(nèi)存也是一樣情況,所以其實所有主流云廠商,大家都在CPU和內(nèi)存性能上半斤對八兩。
穩(wěn)定性上(小白覺得這個才是最重要最有感覺的)AWS的穩(wěn)定性真的可以用“絲般柔滑”來形容,Azure和阿里云屬于潔白光滑的皮膚上面有幾個不明顯的小豆豆,再反觀UCloud、金山云、青云等,抖動皆在AWS等三家的5-8倍以上(CPU和內(nèi)存穩(wěn)定性),而磁盤I/O方面,這些廠商的抖動基本在AWS等的3-17倍以上。
再來個來個高能的的圖感受一下吧:
▲AWS
▲Aliyun
▲UCLOUD
▲騰訊云
AWS的穩(wěn)定性(抖動)非常平滑,阿里云屬于較平穩(wěn),UCloud的云服務(wù)器性能如過山車一般,騰訊云的也有抖動。
上面的圖是給大家一個直觀印象,取了相對短時間的數(shù)據(jù)。
其實小白還做了長達(dá)10天的連續(xù)測試,基本結(jié)果跟上面的4張圖一樣,只是貼上來篇幅更寬難以放在文章中。有趣的是UCloud、騰訊云和金山云三家有相當(dāng)?shù)臅r間規(guī)律性,即基本每天晚上6PM-8PM、10PM-12PM之間,會有性能大幅跌落。仔細(xì)分析了一下,每天晚上這兩個時間段分別是下班在地鐵上玩手機(jī)的時間、以及晚上躺床上玩手機(jī)的時間,用戶量會暴增,但其它幾家廠商就沒有出現(xiàn)如此的時間性下跌。
以上是小白對于云服務(wù)器的選擇的一些看法和感想,總結(jié)而言:
在看性能(第一天成績)的同時,更要注重穩(wěn)定性(365天的成績)
在看裸機(jī)性能(跑分)的同時,更要注重實際使用(搭建應(yīng)用)的性能。
后續(xù)小白還將為大家分享一下云數(shù)據(jù)庫和云存儲的一些比較,供大家參考。
關(guān)于小白:白眼方振眉是大瞎蕭秋水的徒弟,小黑羊的好基友,“白眼看技術(shù),黑手著文章”,從事測試多年。這篇是小白的處男作,后續(xù)還會有更多硬貨出品,歡迎大家關(guān)注小白同學(xué)。