優福網資訊有限公司 http://www.tts.bz/ Created by 李志文
測試目的與架構測試的主要目的.雲服務(Cloud Service)正在全球掀起一股熱潮,而對台灣的軟體產業來說絕對是一個很正面的幫助,再加上智慧手
機的席捲市場、日益普及,與雲服務可以說是一個完美的應用結合,因為智慧手機的量太大了,若是手機上的應用
服務有需要後台資料匯整時,不用雲服務是無法承受的;我們甚至可以說因為智慧手機的蓬勃發展而加速了雲服務
的市場成長!
時至今日,AWS、Azure和GCP可以說是全球雲服務的前三大廠商,再加上各自提供的Region、VM等級也都越來
越多,實在令人感到不知所措:
#想採用雲服務,但到底該選擇哪一家?
#需要採用哪一個等級才夠用?
#需要注意哪些細節?
#需要哪些配套措施?
#使用Tokyo或Singapore的Region就一定會最好嗎?
#到底VM的等級和網路傳輸效能的關係為何?.......
在2012年時,我針對全球最大的兩家雲服務業者 (AWS、Azure)來與國內的雲服務業者進行實際的交叉測試,當
時還沒有GCP的出現(當時只有GAE,屬於PaaS),且當時並未針對不同Region、不同VM等級進行網路吞吐量
(iperf)與http下載(wget)的實際傳輸測試(當時只有針對不同Region的單一等級進行iperf和wget測試)。
此外,這次在效能測試上還加入了各雲服務廠商公認使用的測試工具:fio
當然,由於fio本身是可以下不同參數來進行測試,在這裡為了公平起見,採用同一個參數測試這三家公有雲,我相
信這樣的數據才會具有參考價值的!
優福網資訊有限公司 http://www.tts.bz/ Created by 李志文
此次雲服務測試的注意事項.#使用IaaS類型的雲服務,此次測試的雲服務廠商包括AWS(EC2)、Azure(VM)、GCP(GCE)
#以台灣為主要測試中心點,且為了避免因為台灣中華電信的頻寬限制而造成網路吞吐量、http下載速率的限制,
故台灣的測試中心點有兩個:中華電信的固定制ADSL(50M/20M,光纖型)、GCE(選擇在台灣的機房)
#台灣中心點的ADSL測試設備為:Intel ATOM 1.6GHz、1GB RAM、128GB SSD(Toshiba)、CentOS 6.5 i686
台灣中心點的GCE測試等級為:n1-standard-4(4 vCpus、15GB RAM)、CentOS 6.5 x86_64
#此次的測試均採用Linux CentOS 6.5為主,AWS的EC2則是用Amazon Linux AMI來進行測試
測試時的一些條件及相關工具.#測試用的VM (Virtual Machine)均是在沒有提供其他服務或負載的狀態下運作
#由於各家雲服務廠商可用的VM系統版本會有點小不同,但測試工具的版本均相同
#Linux的測試工具為UnixBench(5.1.3)、hdparm(9.43)、wget、iperf(2.0.5)、fio(2.1.x)為主
VM的主要測試重點.#整體運作效能(UnixBench)
#Disk I/O效能(hdparm、fio 4K read/write)
#網路吞吐量(iperf),且會互換Server、Client來做雙向測試
#http實際傳輸效能(wget),且會互換Server、Client來做雙向測試
測試時均不啟用防火牆,且均以同一個639MB(Linux下則是為625MB)大小的檔案來做傳輸效能的實測!
#iperf和wget的測試:以AWS、Azure、GCP各個Region、各種VM等級來進行交叉測試
優福網資訊有限公司 http://www.tts.bz/ Created by 李志文
測試範圍.針對AWS、Azure、GCP的雲服務進行相關的測試:
#以三大雲服務業者現有的VM所有等級進行效能的測試(IaaS)
#AWS共有8個Region、每個Region的EC2有22~37種等級(沒有每個Region都有37種),一共測了266台EC2
#Azure共有11個Region、每個Region的VM有10種等級(沒有每個Region都有10種),一共測了102台VM
#GCP共有3個Region、每個Region的VM有15種等級,一共測了45台VM
#以台灣中華電信固定制ADSL為Server端,與上述三家雲服務各Region、各等級的VM進行iperf的測試
#以台灣中華電信固定制ADSL為Client端,與上述三家雲服務各Region、各等級的VM進行iperf的測試
#以GCE(台灣機房)為Server端,與上述三家雲服務各Region、各等級的VM進行iperf的測試
#以GCE(台灣機房)為Client端,與上述三家雲服務各Region、各等級的VM進行iperf的測試
#針對上述三家雲服務各Region、各等級的VM進行fio read/write的測試
#針對上述三家雲服務各Region、各等級的VM進行hdparm的測試
#針對上述三家雲服務各Region、各等級的VM進行UnixBench的測試
#可提供給台灣想採用雲服務的企業、創業家一個十分重要的參考依據
註:GCE是GCP(Google Cloud Platform)中的IaaS服務之一
優福網資訊有限公司 http://www.tts.bz/ Created by 李志文
常見的效能瓶頸.網站營運最常遇到的瓶頸:
#對外的網路頻寬
#CPU
#記憶體
#Disk I/O
#儲存空間
#資料庫
#網路I/O
#錢
為何要測試Disk I/O的效能?
Disk I/O包括從磁碟上讀寫資料的時間,或者至少包括應用程式等待讀寫資料的時間。
以往在採購電腦或伺服器時會特別注意實體硬碟的轉速、RAID機制、Cache快取等細部規格,因為這會連帶影響到
日後在運作時的效能(檔案開越多越明顯)。現今最快速的硬碟是SSD固態硬碟,但仍有其需要考量的風險問題(存取
次數有限制)。
而在一切以虛擬化為主的雲服務中,不管用的是Xen、VMWare、hyper-V或KVM的虛擬技術,通通都還是必須考
量到Disk I/O的效能(即便是Virtual Machine還是會有不同的差異)。
為何要測試Virtual Machine的效能?
#效能越好,代表可承載的負載數量越多
#效能越好,代表要啟用的VM越少,對於經營成本就越省
#效能越好,代表可反應的速度越快、越能讓客戶感到愉悅(使用者體驗會較佳)
優福網資訊有限公司 http://www.tts.bz/ Created by 李志文
ping的回應值、網路吞吐量與實際的http下載速率?
#ping的回應值:也就是常說的Latency(網路的延遲),Latency越小、回應速度越快,大多數人只會在意這個數值
#網路吞吐量:可以用來測試兩個點之間的網路最大傳輸量,大多用來測試網路的頻寬(iperf便是此類的工具)
#http下載速率:也就是網站的實際傳輸效能,會受到許多網路設備和QoS之類的軟體影響而有所限制;
所以若想讓網站能夠跑得更快、更順,其實首先要重視的應該是實際的http下載速率,而非Latency
關於其他會遇到的瓶頸問題?
#對外的網路頻寬:得視提供雲服務的廠商所提供的最大頻寬而定
#CPU:慎選所需的VM等級、改善程式的問題或變更處理的流程與時間、適當進行分流
#記憶體:慎選所需的VM等級、改善程式的問題或變更處理的流程與時間、調整設定值
#Disk I/O:慎選所需的VM等級、改善程式的問題或變更處理的流程與時間
#儲存空間:慎選提供雲服務的廠商、慎選所需的VM等級、妥善規劃儲存空間的運用
#資料庫:注意CPU、記憶體、Disk I/O及儲存空間的問題,資料庫的效能會受到影響
#網路I/O:一般網路I/O較少會是瓶頸,除非流量超大或是對外的頻寬大於網卡速度
#錢:上面所有的問題都可以用「錢」來解決,但前提是要有足夠的「錢」才行
更進階的瓶頸問題?
#系統架構:系統架構的規劃會影響到日後是否能夠進行快速部署、除錯、擴展,務必要注意
#水平擴展:一般來說使用垂直擴展(Scale Up)還是會有一定的極限存在,屬於海量型服務的架構都會採用水平擴
展(Scale Out)的規劃,但是水平擴展不是那麼容易做的,除了系統架構的影響之外,包括負載平衡、中介程式、
資料庫、檔案儲存、Cache等等也都會影響到水平擴展的實作