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


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

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

go單機壓力測試

壓測go單機時,采用了2台同規格的8核16G服務器作為發起壓力的A機,A機使用Jmeter工具發起壓力請求。1台同規格的8核16G服務器作為接受壓力的B機。

此外,由於登錄接口會使用用戶code來調用騰訊的openid接口,但是目前只有幾個用戶code,因此無法模擬不同的用戶海量登錄,故此次測試采用了1台同規格的8核16G服務器作為C機來模擬騰訊openid接口以供B機的調用。測試時,B機隨機生成不同的用戶code發送給C機,C機再據此返回不同的openid給B機。

go單機壓力測試結果

當B機達到滿負載(CPU 90%~100%)時,2台A機的壓力測試結果如下

A機一:

 A機二:

 

由上圖可知,go登錄接口的最大並發數為11000RPS左右。

go單機壓力測試結果分析

go登錄接口最大並發數為11000RPS,但由於此次是采用模擬騰訊接口的方式,延時會比實際低一些,若實際采用騰訊接口,換算后並發數約為9000RPS左右。所以,當服務器在正常符合范圍內(CPU <= 70%)運轉時,go登錄單機並發數應為9000*70%=6300PRS左右。而目標登錄並發數為500000RPS,故共需要500000/6300=79.36台8核ecs服務器即可達到登錄的需求

壓力測試結論與建議

結論1:滿足當前每秒50萬登錄並發+每秒1.5萬訂單,至少需要512G以上Redis緩存和60核MySql數據庫。

結論2:當前php單機性能為最大每秒處理2000請求數。

結論3:系統滿足橫向線性擴展。

 

建議1:如不能修改應用情況下,應至少使用250台8C16G ECS+1T版Reids+60核RDS,建議400台8C32G ECS。

建議2:修改應用,提升單機性能,如單機性能提升10倍至20000,則最少只需25台ECS。

建議3:由於php本身並不適合高並發場景,可以考慮使用其它高並發框架,如Golang的echo框架等。

 

主要內容大概是這樣,從去年拖到現在總算填完了,而我基本全程都是打醬油的,現在回想起來,實際執行起來要難很多,你需要熟悉阿里雲服務(快速的搭建測試環境)、編寫測試組件、以及各種中間件知識,包括系統架構、網絡、數據庫等等,讓我首次參與從服務端視角開展的性能測試,果然你知道得越多,不知道的也就越多。有興趣的可以看看阿里巴巴 PTS 團隊的性能測試分享


免責聲明!

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



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