-----------------------------------------------------------------------------------------------------------------------------------------------------------------
線性壓力測試
線性測試主要測試集群性能是否隨着服務器數量呈線性增長。此次測試采用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即可達到下單的需求。
---------------------------------------------------------------------------------------未完待續-------------------------------------------------------------------------------
