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