本次測試的內容是一個半價秒殺購車活動
登陸后,如果之前預約活動有預約成功過,那么就有資格進行搶購活動,如果之前活動沒參與預約,那么會提示:你未預約沒有搶購資格。
之前預約活動有12W人預約成功,那么秒殺活動開始的時候規則是:第一個請求響應的人能中這個名額,其它的全部都會提示:搶購失敗
中間還有個規則是:在點擊搶購按扭后,會彈出驗證碼,驗證碼輸入正確驗證OK后,才真正提交搶購post
那么問題來了:並發存在2處:
1、驗證碼
2、搶購接口post接口
分析壓力大小:
因為之前沒有積累線上數據,所以並不知道真實的壓力會有多大,所有各方給不出一個目標,只能朝單位機器下應用的極限來並發壓測
因為有12W人已預約成功,屆時秒殺活動優惠達5W之高,活動力度之大,可謂為壓測增加了困難,預估搶購活動那10分鍾,可能會有12W請求,且活動並發達到一個未知比較大的值,為啥說未知呢,因為所有人都給不出這個數據,光追着我要極限值,我也是無語了。極限值 只存在特定情況下。
我的分析:
1、使用LR,最大的用戶數10000,集合點設置10000,算是極限值了。這個極限值並不是我的應用的極限值,是我並發工具的極限值,LR允許的最大用戶數就是10000
2、機器絕不會只有1台,即使1台測試了也沒意義,線上至少要2台以上。因為驗證碼前期測試的時候性能較差,所以我索性用了7台后端
腳本分析:
1、驗證碼
(1) 驗證碼,只用在腳本中檢查是否有出來驗證碼圖片,就行了。出不來圖,證明加載不出來。也是有問題的。要統計這個錯誤率。
2、搶購post接口
(1) 大並發下,驗證業務邏輯,確認接口返回的信息,不存在“活動未開始”“沒有預約”,只能是1個成功,其它全是搶購失敗提示
(2) 大並發下,搶購成功的uid與實際入庫UID一致,且數據量對等。
(3) 大並發下,單位時間內看錯誤率
解決的一些LR工具配置錯誤:
1、captcha_info.c(6): Continuing after Error -27780: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "t-captcha.pcauto.com.cn" failed: [10054] Connection reset by peer
captcha_info.c(6): Continuing after Error -27776: Server "t-captcha.pcauto.com.cn" shut connection during attempt to negotiate SSL session
原因是LR不支持SSL,在腳本中打開錄制選項-options-network-port Mapping-add entry
證書pem,一般情況下存在於Tengines讀取的SSL證書目錄下,導出在本地,然后在LR配置中上傳即可。
注意:
去掉
去掉
2、The load generator is currently running the maximum number of Vusers of this type
以搶購腳本為例分析:
這個接口返回的數據是json內容,然后app彈出提示
因為我要檢查活動進行中,大並發量下的,各類返回結果對不對,和確認結果正確性。
腳本:
集合點設置:
場景中跑hello這個action即可
策略設置:
壓力結果:
壓力結果分析:
工具並發1W,請求可以確認1W/s同時去發,但是因為受網速、響應速度、resin允許最大線程數配置限制(resin配置256,超過256個請求同時過來的時候,就會等待,所以會不是完全的並發,雖然工具發了請求,但實際請求沒有到應用層),那么為了核對真正的並發。我對accesslog分析每秒具體是有多少條日志過來。經分析,
實際每秒並發處理只有最高5200+
所以可以得出,每秒1W請求/s,實際只響應得了最高5K/s