omniture

論云存儲服務(wù)性能評測的“正確姿勢”

2015-12-30 12:49 7598

上海2015年12月30日電 /美通社/ -- 最近,越來越多的第三方獨立機構(gòu)推出了云服務(wù)測試報告,這個現(xiàn)象讓眾多業(yè)內(nèi)人士感到喜憂參半。喜的是數(shù)據(jù)的大爆炸,企業(yè)的轉(zhuǎn)型意識,互聯(lián)網(wǎng)的發(fā)展已經(jīng)讓云計算市場迅速進入了紅海階段,人們對云的需求與依賴性越來越高。憂的是也有打著云服務(wù)獨立測試的旗號讓一些并不真實的數(shù)據(jù)展現(xiàn)在受眾面前的事情發(fā)生。

云存儲服務(wù)性能評測示意圖
云存儲服務(wù)性能評測示意圖

進入云服務(wù)領(lǐng)域四年了,七牛從云存儲做切入口,到目前已經(jīng)積累了數(shù)十萬用戶。在這里,將“如何更好地測試云存儲服務(wù)性能”分享出來,希望能讓更多的在選擇云和往云上遷移的企業(yè)獲益。

首先,普及一個基礎(chǔ)知識:普遍認(rèn)為,在互聯(lián)網(wǎng)的世界里有三類不同的數(shù)據(jù):

  1. 結(jié)構(gòu)化數(shù)據(jù),也就是關(guān)系型數(shù)據(jù)。
  2. 日志類型的數(shù)據(jù),即記錄用戶行為軌跡的數(shù)據(jù)。
  3. 非結(jié)構(gòu)化數(shù)據(jù),也就是我們經(jīng)常使用和產(chǎn)生的文件類數(shù)據(jù),如圖片、音視頻數(shù)據(jù)等。

就目前來說,大家所接觸到的公有云存儲一般是針對第三類也就是非結(jié)構(gòu)化數(shù)據(jù)的存儲,除了存儲本身,也會提供數(shù)據(jù)加速(CDN)以及數(shù)據(jù)處理等服務(wù),七牛就是這樣。這里面,每一個子服務(wù)都會對應(yīng)相關(guān)的獨立測試,而本篇文章更多的是探討如何做好存儲本身的性能測試。

了解了基本概念,在測試前,還要理解典型的數(shù)據(jù)使用環(huán)境下的三個主要階段。

第一階段指數(shù)據(jù)從客戶端到存儲的服務(wù)端(服務(wù)入口),即上行階段。上行的表現(xiàn)一方面是由用戶的網(wǎng)絡(luò)質(zhì)量決定的,同時也與云存儲服務(wù)商上行節(jié)點的優(yōu)化策略有關(guān)。這時,重要的是做好整體的網(wǎng)絡(luò)優(yōu)化,以及在軟件層面解決由于網(wǎng)絡(luò)不穩(wěn)而帶來的上行問題。例如,斷點續(xù)上傳,模式是分片并發(fā)上傳,是能很好地解決網(wǎng)絡(luò)不穩(wěn)的方法。因此,七牛在為“美拍”服務(wù)的時候,對方是非常典型的短視頻 UGC 場景,就充分用到了斷點續(xù)上傳的功能。此外,增加存儲節(jié)點和反向代理節(jié)點也可以優(yōu)化劣質(zhì)網(wǎng)絡(luò)環(huán)境下的用戶上行問題。上行這個展開了,也是一個獨立測試。

第二階段就主要依賴云存儲服務(wù)本身的性能表現(xiàn)。例如,在數(shù)據(jù)達到存儲入口之后,需要多久才能落地到磁盤;在取一個數(shù)據(jù)時,數(shù)據(jù)要多久才能從磁盤到達存儲的出口等。這個階段的測試也是下文五個關(guān)鍵點中所主要描述的。

第三個階段指數(shù)據(jù)的下行階段。數(shù)據(jù)一般是由普通用戶來使用的,而從存儲邊緣到達客戶端的數(shù)據(jù)下行表現(xiàn)是由 CDN 決定的,因此這個階段的性能評測是典型的 CDN 性能評測,很多文章中均有詳細(xì)描述,這邊就不做具體描述了。

那么如何針對云存儲本身的性能表現(xiàn)做有效評測呢?以下分五個關(guān)鍵點來進行闡述

第一個關(guān)鍵點:

保障測試機的性能。目前絕大多數(shù)云存儲服務(wù)的性能都不弱,因此,在測試時,保障充足的帶寬是非常非常必要的,同時,CPU 等資源也要確保充足。此外,如果是通過上傳小文件來進行測試的話,則盡量從內(nèi)存生成小文件,而不是從磁盤生成,以免由于磁盤 IOPS 不夠,而影響測試的準(zhǔn)確性。而如果上傳的是大文件,那么較好不要受到測試機帶寬的限制。同理,如果是下載一個小文件,較好不要落磁盤,直接將其扔掉就好了,以避免磁盤成為性能瓶頸。

第二個關(guān)鍵點:

將測試機與云存儲服務(wù)的距離控制在合理的范圍內(nèi)。機器離云存儲的距離是非常關(guān)鍵的,因為如果兩者之間的距離太大的話,跳數(shù)、丟包率、延遲等都會極大影響測試的效果。一般測試,通常會選擇在同一個供應(yīng)商同機房提供的虛擬機上來做云存儲性能測試,這樣不僅測試起來會比較方便,而且能確保測試結(jié)果準(zhǔn)確有效。

七牛的一個特殊情況為例,七牛目前對外是不提供虛擬機的,虛擬機的使用是要實名申請審批的,因此第三方獨立測試機構(gòu)在測試七牛時,也希望能夠更好地確認(rèn)這一點。

第三個關(guān)鍵點:

根據(jù)存儲數(shù)據(jù)的大小,關(guān)注相應(yīng)的測試指標(biāo)。通常都會選擇 Get(下載)和 Put(上傳)來測試云存儲本身的服務(wù)性能。這里面會考察響應(yīng)時間與 TPS(平均每秒處理的事務(wù)數(shù))。

因此推薦以實際用戶為基準(zhǔn)來考慮測試數(shù)據(jù)的大小。對于圖片數(shù)據(jù)來說,可以關(guān)注 50KB 和 2MB 兩個級別,主要因為一般手機拍照的圖片大小在 1MB 到 2MB 這個級別,這對圖片上行和下載原圖都比較關(guān)鍵。而 50KB 是比較常見的縮略圖的大小,也就是在網(wǎng)頁上展示的絕大部分圖片尺寸。此外網(wǎng)站上還會一些更小的圖片,如logo、圖標(biāo)等,但這類圖片基本上都是重復(fù)的,這樣 CDN 的緩存效率比較高,一般體驗都不會差。而容易造成用戶體驗差的,反而是那些每次大小都不一樣、每個頁面都不會重復(fù)的圖片,它們才是評估的關(guān)鍵。而如果是做短視頻產(chǎn)品,如常見的10秒的短視頻,文件大小通常是1-2MB,因此建議關(guān)注這個級別的上行和下行。如果是更長的視頻,也應(yīng)該關(guān)注相對應(yīng)的測試大小。

第四個關(guān)鍵點:

測試數(shù)據(jù)的頭尾都是不能要的。在測試時,一般要選取中間的數(shù)據(jù),因為最開始的時候,由于程序啟動或者其他干擾原因會導(dǎo)致性能不太穩(wěn)定,一般性能會差一些的。同時,尾部的數(shù)據(jù)通常也需要去掉,比如使用多線程測試時,各個線程結(jié)束的時間不一致,也會導(dǎo)致測試尾部的數(shù)據(jù)偏差較大。

第五個關(guān)鍵點:

推薦對云存儲服務(wù)做一些高并發(fā)的測試,這樣可以考驗云存儲供應(yīng)商的真實能力,即在處理高并發(fā)情況下的成功率。但做高并發(fā)測試時,用比較傳統(tǒng)的 Java、Python 等語言不太合適,因為在線程模型下它們的并發(fā)能力受系統(tǒng)能支撐的線程數(shù)限制,高并發(fā)的寫法又比較復(fù)雜。而用 Go、Erlang、Scala,Node.js 等語言則會方便不少。

由于國內(nèi)還沒有特別權(quán)威的第三方做獨立對比測試的機構(gòu),所以較好是自己來做測試,按照上面的方式,也很簡單。

此外,選擇云存儲,除了上面談到的云存儲本身的性能,用戶也需要關(guān)注存儲的可用性以及性價比等方面。為了測試可用性,開發(fā)者可以預(yù)寫一個腳本,放在 crontab 里邊運行一段時間,收集相關(guān)數(shù)據(jù)。目前,國內(nèi)有些云服務(wù)供應(yīng)商為了讓用戶能實時了解服務(wù)的可用性,從而更放心地使用云服務(wù),已推出系統(tǒng)健康狀態(tài)實時監(jiān)控服務(wù),例如在 status.qiniu.com 上就可以看到七牛的完整可用性紀(jì)錄以及關(guān)鍵性能指標(biāo)。此外,也要考察覆蓋度問題,不過覆蓋度問題一般由 CDN 提供支持,也有聽云這類比較易用的測試服務(wù)。

當(dāng)下,AWS、Azure 等海外云服務(wù)也已經(jīng)落地國內(nèi),他們在國內(nèi)通常也具備了以上測試條件,因此測試方式并無不同。

最后想說的是,到了今天,越來越多的企業(yè)在選擇云,基礎(chǔ)技術(shù)對用戶而言也越來越隱形,而以用戶的需求為中心,專注云服務(wù)的質(zhì)量才是廠商真正最需要做的。

作者簡介

李道兵,七牛首席架構(gòu)師。人稱道神,Debian Developer, iso-codes 等開源軟件維護員,原盛大云資深研究員。

消息來源:七牛云存儲
China-PRNewsire-300-300.png
全球TMT
微信公眾號“全球TMT”發(fā)布全球互聯(lián)網(wǎng)、科技、媒體、通訊企業(yè)的經(jīng)營動態(tài)、財報信息、企業(yè)并購消息。掃描二維碼,立即訂閱!
collection