秒殺功能壓測 jmeter--------重要!!!


線程組里面有三個接口請求,依次為:顯示商品列表、登錄秒殺平台賬戶、進行秒殺

對線程組用5000個線程循環10次

 

 

設置一下默認配置,之后就不用反復填寫了

 

 

設置配置文件
這個具體功能就是讀text文件並且設置變量的作用。

 

 

設置HTTP 請求
我們這次直接對秒殺功能進行壓測,填寫的路徑如圖所示,這個要參見之前的代碼。訪問這個路徑時需要兩個變量,其中token是從之前的文本文件中讀取的(也可以從登錄接口正則獲取到),注意Value的語法(如何寫的)。

 

 

結果展示

第一次運行的結果:

 TPS:630.9/sec(不高)
錯誤率:64.73%(太高了)
錯誤率太高了,看一下程序,拋異常了。

Redis異常

 

 

 很明顯,這樣的並發下Redis讀取超時了。貼出Redis的配置:

 

 

 數據庫超賣現象

 

 

 這是秒殺商品表,我們是對商品1進行秒殺的,庫存成為負值,問題大了。我之前設置的秒殺商品個數給了9件,現在超賣了22件。

第二次運行結果

為了客觀表現結果,重新再運行一次。注意把數據庫信息清空的清空,恢復的恢復;把JMeter上次結果清空。

壓力報告結果:

 

 TPS:808.5/sec(不高)

錯誤率:67.16%(太高了)

Redis異常

和第一次一樣,就不貼圖了。

數據庫超賣現象

 

 

4. 總結

這次實戰結果就是:1. Redis讀取超時拋異常導致壓測的錯誤率太高;2. TPS不高,說明系統性能不佳;3. 數據庫出現超賣現象,嚴重的業務邏輯錯誤

 

5. 解決異常

程序拋異常,這是不應該產生的,先將拋異常的問題解決。
我一開始先把redis連接池重新配置:

 

 運行后發現程序不拋異常了,但是壓測的錯誤率並沒有下降,依然在60%以上,意識到這可能不是簡單改動程序就行了。

查看了壓測的日志,也並沒有報錯,如果大家有遇到類似的問題,參考博文:

https://www.cnblogs.com/111testing/p/11437815.html

主要原因是:Windows 提供給 TCP/IP鏈接的端口為 1024-5000,並且要四分鍾來循環回收他們。就導致我們在短時間內跑大量的請求時將端口占滿了。

這個方法我試過了,用了這個方法可以把錯誤率大大降低,但是如果把並發調大還是會出現錯誤

 

所以我想是不是本身就是我單機性能有限。可以把並發線程和循環次數適當調小。

 

 

 

 

原文鏈接:https://blog.csdn.net/Serena0814/article/details/89648174

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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