Locust項目壓力測試總結


一、簡介

Locust是一款使用Python編寫的壓力測試工具,本篇總結會介紹在實際測試過程中遇到的問題,不會介紹入門的操作,詳情可以看官網的入門教程。

https://www.locust.io/

使用Locust的原因是因為可以模擬的用戶數量可以通過添加硬件來增長,相對於jmeter來說配置更加方便。

二、需求描述

項目采用node+redis+oracle的模式,需要測試出單台服務器的性能瓶頸。

三、實際測試

環境的搭建:服務器上只需要安裝好Python2.7及以上的版本,然后通過pip安裝locust就完成了搭建。

腳本編寫:根據需求編寫好python腳本,放到服務器上如 locu.py。

腳本運行:通常使用的是主從模式來運行腳本,這樣能夠方便進程多開。

    locust -f locu.py --master   該命令運行后會生成一個主進程進行管理,主進程只需要一個。

    locust -f locu.py --slave   該命令運行后會有一個子進程啟動,根據需要可以多次運行就會開啟多個子進程,子進程用來模擬用戶數量。

以上命令運行后或默認開啟8089 端口,通過瀏覽器訪問本地8089端口就能進入web界進行控制。

訪問地址: http://localhost:8089,slave 就是開啟的子進程數量。

四、防坑指南

1.如果實在Linux服務器運行locust,尷尬的是沒有圖形界面操作web。

解決措施:一般連接服務器都是通過xshell來連接,我們可以通過xshell自帶隧道功能建立一條隧道,將服務器8089端口的信息傳輸到本地計算機,這樣直接在本地計算的瀏覽器就能對服務器進行控制。

xshell >隧道窗格>轉移規則>右鍵添加

2.后台運行命令,防止命令中斷

通過xshell訪問到服務器后,如果運行locust -f locu.py --master ,一旦xshell退出,命令也會自動中斷。因為通過xshell登錄所運行命令都屬於登錄用戶進程的子進程,一旦斷開連接主進程會自動關閉,該進程下所有命令都會自動關閉。所以如果是長時間運行的話最好把命令放在后台運行。

(locust -f load.py --master &)   該命令表示把該進程放置到后台運行,就算用戶斷開連接也會一直運行。

放置到后台后果想要關閉命令就先使用ps -ef|grep locust 查看進程號,再用kill pid 來殺掉進程。

3.用戶數量的詳細解釋

web界面的user 數量表示並發數,也就是每次訪問的並發連接數。實踐的時候用戶數量是300,表示每次訪問有300個用戶同時訪問,吞吐量能達到2000/s,說明在一秒的時間內服務器響應了大約7次,那么300的用戶耗費的時間就是140ms左右。

4.用戶數量與slvae關系

用戶數量是300,slave為3,那么每個slave會平均分配發送的用戶量100,與jmerter分布式不一樣。

五、最終測試結果

服務器配置:CPU 8核 內存16G  
承受最大業務量900萬次請求數,占用內存12G,占用磁盤空間23G。
redis與業務量關系 80萬請求數占用1G redis內存
磁盤與業務量關系  80萬請求數占用2G 磁盤空間


免責聲明!

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



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