“盡管大促活動前加班加點做測試,到了活動當天仍然是危機頻發,高并發的關鍵時刻又出亂子了,緊急排查故障,處理完之後 1 個小時過去了。時間不等人,顧客也不等你,一個漏洞沒注意到就讓競争對手鑽了個空子,平台損失嚴重,還有被媒體曝光的風險。”針對剛剛過去不久的 6.18 大促,某電商平台技術負責人吐槽道。
大促常态化的當下,相信這個場景在電商領域并不少見,每到這個時刻,平台總是會做各種排查測試,嚴陣以待,生怕出現上述這種窘境,但往往還是防不勝防。事實上,在移動互聯網盛行的當下,超高并發壓力并不隻存在于電商領域,在線教育、在線辦公、社交娛樂等領域同樣深受其擾。
在超高并發量下,IT 系統如何才能挺住不崩?有沒有辦法可以提前預測到,并加築好“防禦堡壘”?6 月 23 日,睿象雲 CTO 何毅鵬在線上進行了一場主題為「後疫情時代,企業性能評估的最佳實踐」的直播課程,本次直播深入剖析了高并發網站常見性能異常事件,分享了如何從 0 到 1 構建标準化、規範化的雲壓測體系,尋找上述問題的最佳答案。
以下内容經由 InfoQ 編輯整理自「後疫情時代,企業性能評估的最佳實踐」中何毅鵬老師的分享。
為什麼一定要進行性能測試?
“性能測試的重要性不言而喻,如果性能測試做的不好将會帶來災難性的問題。”
衆所周知,性能異常包括 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 工具,可以快速地進行一些慢事務的追蹤,分析出應用和數據庫常出現的一些問題,進行場景模拟,例如緩慢事務場景模拟、網絡層高吞吐測試場景模拟等。 寫在最後
随着科技的進步,移動互聯網實現了飛躍式發展,軟件産品已經應用到各個領域,在疫情助推下,線上模式走紅各行各業,更是颠覆了流量高并發場景的峰值和出現頻率,在此背景下,如何保障系統能夠承擔高并發請求,為用戶帶來優質的服務體驗,已經成為企業發展上的“兵家必争之地”,性能測試就是那把開拓市場的利器。
傳統壓測弊端已現,雲壓測優勢凸顯,性能測試的未來發展方向已經漸趨明朗。作為國内雲壓測領域的先行者,睿象雲沉澱了諸多實踐經驗,為電商、在線教育、在線辦公等諸多領域的企業構築好了一道性能測試的牢固城牆。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!