微信小程序性能測試之jmeter踩坑記錄(三)


接上篇:微信小程序性能測試之jmeter踩坑記錄(二)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

線性壓力測試

線性測試主要測試集群性能是否隨着服務器數量呈線性增長。此次測試采用go模擬的后台程序作為接受壓力的B機,分別記錄了在1台,2台,4台,8台,16台ecs服務器集群下系統的總並發數(CPU負載均為70%)。

結果分析:

下面分別是1,2,4,8,16台ecs的CPU負載圖和並發數:

  • 1台ecs並發數為24000RPS左右,如下

  • 2台ecs並發數為48000RPS左右,如下

  • 4台ecs並發數為96000RPS左右,如下

  • 8台ecs並發數為192000RPS左右,如下

 

  • 16台ecs並發數為384000RPS左右,如下

由上可知,集群並發數隨着集群機器數量呈線性增長

 

單機壓力測試

單機測試主要測試單機的並發量。發起壓力的機器采用了1台跟壓測中間件的A機同一規格(8核16G)的ecs,被壓測的機器采用了1台同樣配置的ecs。測試在單一節點下的php服務器能承受住的壓力情況。為了模擬php接口需要的各種參數,這次采用了Jmeter發起壓力請求。

單機空壓

空壓選用了業務邏輯最簡單且不會操作數據庫和Redis的授權接口CosAuth,以表示php服務器所能承受的最大並發請求數。下圖是Jmeter的壓力測試結果:

 

可以看到此時顯示的並發數平均為3000 RPS水平。下面再來看看此並發數下php單機服務器的各項硬件指標:

由上圖可知,在php單機並發數達到3000RPS的時候,服務器的CPU負載已經達到了90%左右,已接近極限水平了,故php單機的空壓並發請求數為3000RPS左右

單機其余接口壓測

1,php單機登錄接口(login)在服務器CPU滿負載(90%~100%)下的並發數如下圖所示:

可以看到php單機登錄最大並發數平均為2200RPS左右。 

 2,php單機下單接口(addOrder)在服務器CPU滿負載(90%~100%)下的並發數如下圖所示:

可以看到php單機下單最大並發數平均為500RPS左右

3,php單機登錄加下單混合(login+addOrder)在服務器CPU滿負載(90%~100%)下的並發數如下圖所示:

可以看到php單機登錄加下單混合最大並發數平均為2000RPS左右

4,下圖是php單機的登錄下單混合業務場景在服務器CPU70%負載(即正常可接受范圍內CPU的最大負荷)下的並發數:

可以看到php單機的登錄下單混合業務場景在服務器CPU70%負載的並發數約為1500RPS

php單機壓力測試結果分析

由上文可看出,php單機的登錄最大並發數為2200RPS左右,而目標登錄並發數為500000RPS,故計算出至少需要500000/2200=227.27台8核的ecs服務器,共需要228*8=1824個ecs核心,才能滿足需求。

考慮到如此多的ecs成本頗高並且極有可能阿里庫存不足,建議將登錄接口采用go進行編寫和處理,而其余業務采用php進行處理

另一方面,從上文看出php單機的下單最大並發數為500RPS左右,下單目標並發數為15000RPS,故需要15000/500=30台8核的ecs,若要是服務器在正常符合范圍內工作(CPU<=70%),則需要15000/(500*70%)=42.85台ecs即可達到下單的需求

 

---------------------------------------------------------------------------------------未完待續-------------------------------------------------------------------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM