一遇 “高併發” 系統就難逃一 “崩”,效能測試的方法你真的選對了嗎?

睿象雲發表於2020-07-10

大促常態化的當下,平臺總是會提前做各種排查測試,嚴陣以待,生怕出現高併發帶來的,但往往還是防不勝防。事實上,在移動網際網路盛行的當下,超高併發壓力並不只存在於電商領域,線上教育、線上辦公、社交娛樂等領域同樣深受其擾。
 
在超高併發量下,IT系統如何才能挺住不崩?有沒有辦法可以提前預測到,並加築好“防禦堡壘”?6月23日,睿象雲 CTO 何毅鵬線上上進行了一場主題為「後疫情時代,企業效能評估的最佳實踐」的直播課程,本次直播深入剖析了高併發網站常見效能異常事件,分享瞭如何從 0 到 1 構建標準化、規範化的雲壓測體系,尋找上述問題的最佳答案。

為什麼一定要做效能測試

“效能測試的重要性不言而喻,如果效能測試做的不好將會帶來災難性的問題。” 

眾所周知,效能異常包括5種典型場景:
· 瞬時的使用者訪問量激增;
· 服務端的流量滿載;
· 系統資源長期居高不下被佔用;
· 服務訪問的過程中超出了最大的上限,服務過窄;
· 網站雖然可以訪問,但是延時極具升高。 

第一種情況往往會出現在搶購場景中,搶購前五分鐘大量流量的匯聚往往會導致服務端前期的頻寬不夠用,使用者在搶票的過程中體驗會非常差,進而影響到平臺的營業額。
 
第二種伺服器的CPU滿載的情況也很常見,一般來說,業務複雜的系統單機監控的效能消耗基本達到了20%左右,單機的剩餘算率一般只有70%到80%,複雜的場景下頻繁的訪問可能會使CPU瞬時高達90%以上,基於此,如果在效能測試期間沒有很好地測試出暴漲的場景,對於伺服器來說就是一個比較大的災難。
 
第三種情況即常見的負載均衡裝置流量的滿載,現在大部分企業使用的都是雲廠商的負載均衡裝置,基本上都存在PPS連線的上限,在沒有做很好預估的情況下,當上限滿載的時候,後續訪問的使用者就會出現連線錯誤的現象,典型的就是HTTP 503錯誤。
 
第四種情況即系統過載、超過訪問上限,在測試過程中存在的主要問題是容量估算不足,現在大型業務的系統擴容切換至少需要90S左右才能完成業務的快速接管,因此前期效能測試的容量評估過程中做熱切換和熱部署的場景非常有必要,場景搭建好後,通過橫向擴容可以快速接管業務,一些複雜的效能問題也能很快迎刃而解。
 
第五種情況下網站訪問沒有問題,但是網站訪問延時極具升高,部分服務介面大面積超時,影響使用者使用體驗。
 
研發過程中,我們會發現無論是研發還是測試,一般罪魁禍首都是一些小範圍的程式碼錯誤,進而會導致一些功能和效能的問題,造成極大的損失。因此,嚴格的需求評估是非常有必要的,如果能很好地分析出常見的和異常的業務場景,一旦上線後出了問題,也能遊刃有餘地去應對。

在整個需求過程中,運維人員不需要特別著急地做一些編碼的操作。如上圖所示,前期要確定測試場景的設計、測試流程的梳理、測試資料的管理以及執行順序,隨後由效能測試執行人員完成總結性操作,彙總出測試結果,通過記錄各個節點出現的效能問題,形成整個測試的分析報告,包括調優資料、引數配置資料。
 
最終運維人員依託於線上的效能資料來配置指標梳理的方法,一般來說包括三種:正常運維的引數配置、系統異常下的引數調節、應急異常或災難性問題下的調節方法。
 
如果效能測試做的不到位,那帶來的直接經濟損失將難以估量,以電商企業為例,來自亞馬遜的調研資料顯示,當電商的訪問速度每下降100毫秒,營業額至少減少1%左右,相對618、雙11這些場景來說,如果使用者體驗比較差,付款付不出去,損失是可想而知的。

選擇哪一種測試方法有效?

“移動網際網路時代,企業該如何為頻繁的市場活動和產品快速迭代進行有效而準確的效能測試呢?”

隨著移動網際網路的急速發展,電商、線上教育、票務等企業業務數量急劇上升,超高併發量的數值一直在突破進階。同時,業務複雜化下,整個IT系統的架構也在快速演變,從單主機到1000臺應用主機轉換、分散式 CDN 節點超過 4000+、鏈路節點裝置層數突破10種、分散式微服務架構盛行。在此背景下,傳統效能測試面臨諸多問題: 

· 搭建10000使用者併發測試環境需要10臺物理主機;
· 測試環境部署時間5天以上且環境複用率低;
· 10000併發的License授權費用超過百萬;
· 工具指令碼、資料、報告管理分散,存在較大安全隱患;
· loadrunner、Jmeter等測試工具操作複雜、學習成本高,普通測試人員不易掌握。

 傳統效能測試式微之下,雲壓測快速汲取養分實現了趕超,效能測試迎來了創新與變革的春天。
 2005年雲壓測概念橫空出世,伴隨著雲端計算技術的快速發展,使用雲資源實現彈性、可擴充套件、自由伸縮分散式壓力產生模式。利用雲端的資源,雲壓測實現了一站式完成效能測試,可模擬系統各種異常場景,使用者無需再購買包括伺服器、機房在內的多種資源,能夠節省大量的資源成本和人力成本。目前,國外如Soasta、國內如睿象雲,其雲壓測產品已經成為傳統效能測試平臺的最強勁對手。 

相對於傳統的效能測試方案,展開來說,雲壓測具備4點優勢: 

· 簡單易用:雲壓測的指令碼3分鐘就可以生成,因為測試資源全部部署在雲端,可以實現秒級啟動,同時能夠實現測試資料的秒級回傳以及效能問題的同步定位。
· 全棧監控:雲壓測產品都是基於分散式的雲端計算服務,能夠基於位置快速進行響應,還能夠實現同步監控資料回溯,達到全棧監控資料採集,全面覆蓋網路層、伺服器層、作業系統層以及應用層。
· 規模化部署:絕大多數雲壓測廠商的測試節點都能夠覆蓋全球,實現基於位置的按需定製,還可以實現全鏈路真實節點,達到千萬級的併發請求。
· 價效比較高:SaaS服務天然具備靈活的優勢,雲壓測產品都可以按需計費,也不需要硬體部署,很容易實現一體化測試管理服務,而且團隊之間也可以實現編組協同,大大提升工作效率。

如何開啟一場優質的效能測試?

“雲壓力測試平臺能夠幫助使用者解決哪些效能問題?如何解決?”

一般來說,分析效能問題需要從網路層面、作業系統層面、應用伺服器、伺服器問題這四個層面入手。在網路層面,主要就是頻寬不足、網路異常抖動,如果使用機房的IDC部署,還需要考慮交換機的收斂比;在作業系統層面,存在的典型問題是引數標準化的問題,比如說Sysctl以及一些網路引數的配置問題;在伺服器端,CPU監控過程中需要區分哪些程式的CPU佔用過高,如果程式佔用過高,還要分析程式佔用大概是一個什麼樣的狀況,磁碟IO如果讀寫過高的時候,就要考慮是否有更好的SSD的硬碟。
 
如果想要更加系統地進行效能測試問題的分析,更加全面地探索到效能問題,那麼一套系統完整的測試流程是不可或缺的。 

完整的測試流程如上圖所示,從需求分析開始到測試的規劃、指令碼的編寫、測試的準備,然後進行一個全面的分析,最後出具評測報告,報告中會包括一些指標,如監控資料和配置資料的輸出。
 
雲壓測中,需求分析的環節需要關注幾個重要的點,包括網路的資訊、防火牆的資訊的收集,防毒牆、負載均衡的裝置、軟硬體加解密、應用結構化的部署,以及使用者操作習慣的使用評估等,當這些點都分析的比較完整後,就可以做出來一些比較貼合實際的場景了。
 
在測試規劃中,比較重要的是瞭解從各個區域訪問的時間差異,比如說北上廣深相對於一些偏遠山區,在訪問過程中這些地區的響應時間是不是基本上一致,如果不一致運維人員要需要分析一下伺服器擺放位置、CPN配置合不合理等問題。
 
在指令碼編寫上,過程需要簡單化,簡單到讓業務人員也可以參與編寫,這樣做的好處在於業務人員也能夠參與到測試中。在分析測試場景的時候,離市場最近的業務人員要比一些常規的技術人員分析的更透徹。
 
測試準備的過程中,監控工具要做到儘量全面化覆蓋,除了典型的五大件之外,還需要包括一些錯位預製的快速輸出。監控的軟硬體機器一定要部署類似於自動報警的功能,一旦出現大面積問題,可以給運維人員快速的提示,以便其作出快速響應。
 
在全面分析環節,要注意的是,基礎資料和測試資料的預估量和生產需要基本保持一致,這樣測試結果就跟線上真實的訪問結果基本上不會有太大出入,具有非常準確的參考價值。
 
分析過程可以藉助工具來完成,提前分析好各個節點需要輸出的內容,做好整個測試過程的條理化,最終出具的報告或者是調優指標引數才有一定的參考價值,整個測試的輸出結果才能有望成為後期運維優質化部署的參考。

生產交易日誌分析的重要性不言而喻,從上述圖表來看,業務分佈狀態上存在很多插針的資訊,這就可能是訪問異常的場景,需要對響應時間過高的請求做一個完整的分析,包括平時基礎量、交易高峰期、特殊交易日、生產故障問題、環境滿載模擬等,如果這些全部模擬到位,基本就不會出現太大的紕漏了。

在生產環境壓測中,測試資料準備的過程比較漫長,資料清理時可能會出現資料丟失或遺漏的問題,針對這一問題,睿象雲在長期的效能測試經驗中總結了四種方法:

· 資料預埋。即在生產的應用下掛測試庫,這樣即使測試效能稍稍偏低,也基本上可以測出真實訪問過程的效果,而且資料基本做到了隔離,不會受到汙染,方便後期清理。
· 非介面的標識改造。常見如在http請求頭中的user-agent欄位的標識做區分,在請求標識中,可以選擇一些不常見的請求頭,後端做業務解析,將這些資料做一些標識,提升後期資料清理的速度。
· 旁路資料路由。當業務流轉非常清晰時,可以把正常的業務資料和壓測資料進行分離處理,之後定向追蹤、清理壓測的資料表即可。如果線上只做查詢類的交易,睿象雲主要清流水錶和記錄表,對正常業務不會有影響。
· 介面欄位標識改造。在關鍵資料表裡預留壓測欄位的標識位,壓測階段就可以直接填充標識類的資訊,後續可以直接據此來做資料清理。

基於上面的種種分析,相信大家對壓力測試的環節和注意事項都已經有了一個比較深入的瞭解,那麼,接下來回歸到最初問題的探索,雲壓力測試平臺究竟能幫助企業解決哪些效能問題?主要在於4點:

· 真實業務流量模擬。基於雲壓測,不僅能夠模擬成百上千使用者的真實訪問,還可以實現彈性可變的使用者行為模擬,進行快速的使用者伸縮。同時還可以實現網路流量質量的急速驗證,通過正常流量來驗證網路流量滿載的狀況。如果企業使用的是類似F5物理硬體裝置的負載均衡,還可以驗證物理裝置硬體的PPS值是否能夠滿足高併發需求。
· 資源監控。除了CPU、記憶體、磁碟的快速檢測,還可以進行資料庫資源使用監控,以及一些中介軟體資源監控。
· 作業系統應用優化。雲壓測平臺可以在整個壓測過程中為Limit引數配置提供非常好的測試依據,同時可以為Tomcat的連線數、Jboss連線數進行實時調優。
· 效能問題定位。結合一些常見的APM工具,可以快速地進行一些慢事務的追蹤,分析出應用和資料庫常出現的一些問題,進行場景模擬,例如緩慢事務場景模擬、網路層高吞吐測試場景模擬等。

寫在最後

隨著科技的進步,移動網際網路實現了飛躍式發展,軟體產品已經應用到各個領域,在疫情助推下,線上模式走紅各行各業,更是顛覆了流量高併發場景的峰值和出現頻率,在此背景下,如何保障系統能夠承擔高併發請求,為使用者帶來優質的服務體驗,已經成為企業發展上的“兵家必爭之地”,效能測試就是那把開拓市場的利器。
 
傳統壓測弊端已現,雲壓測優勢凸顯,效能測試的未來發展方向已經漸趨明朗。作為國內雲壓測領域的先行者,睿象雲沉澱了諸多實踐經驗,為電商、線上教育、線上辦公等諸多領域的企業構築好了一道效能測試的牢固城牆。

相關文章