Locust、Jemter、Loadrunner三種工具的分布式壓測


前言:

最近公司接了一個雲上展會項目,合同里簽訂的是6w並發連接數和2w QPS的性能指標,還有監理單位,第三方評測單位。

唉,先吐槽一下,有了監理和評測,文檔tmd一堆堆,嚴格按照軟件開發來執行,寫文檔都得累死,對於經常只有概要設計,有時候概要設計都舍了的研發流程,哈哈 ~慢慢體會!

再加上一點,如果評測單位技術很牛皮,那確實能對項目有所幫組,但評測單位技術不行的話,那簡直就是來搗亂,平添很多無用工作。

講講並發數的理解:

6w並發,也是無語,簽合同時也沒想到后續有多麻煩,估計當時沒理解透徹並發連接數與連接數的概念。

並發連接數:每時刻連接到服務器的請求數,並沒有時間單位,沒有秒,毫秒的度量單位。比如6萬並發,你服務器無時無刻都有6萬請求連接。

所以1000並發連接數,可以有2w多的QPS或TPS。因為QPS或TPS是以秒為單位的,1秒內無時無刻的1000並發請求,就可以完成好幾萬的請求次數。

到這里,是不是認為6w並發很難完成,確實,到項目初驗完成,我們只做了3w的並發,QPS倒可以輕松完成。

進入正題:

1. Locust的分布式壓測,看過我博客之前的文章,應該了解,locust的分布式壓測其實就是啟動命令不同而已,和jemter、loadrunner不同的是,locust的master端不會主動把腳本

推送到slave服務器,需要自己把要執行的腳本拷貝到slave服務器上。

針對這點的話,可以在master執行腳本里把遠程推送文件與遠程執行命令加上,就可以搞定了,不用一台台服務器拷貝,再啟動命令。

分布式執行命令:

master:

locust -f D:\thecover_project\api_locust\locust_view\kbh_api\locust_api\locust_bot_search.py --master --master-bind-port 9800 --headless -u 100 -r 20 --expect-worker 1 -t 2m -s 10 --step-load --step-users 100 --step-time 2m --csv D:\thecover_project\api_locust\resource\csv\locust_bot_search.py0922115120

slave:

locust -f D:\thecover_project\api_locust\locust_view\kbh_api\locust_api\locust_bot_search.py --master-host  10.111.53.123 --master-port 9800 --headless --worker

這里的ip就是master機器的ip(一般都是局域網內網IP)

執行壓測的測試機部署圖:

上面服務器CPU配置為8核16線程,非16核。一般locust一個CPU線程可以啟動一個slave。一台機子可以啟動16個,當然,啟動12,到15個最好,都啟動的話,電腦后邊很卡,cpu90%會主動丟失該slave。

執行完成后自動生成報告(之前文章有介紹報告生成)。

通過這樣的分布式壓測,頁面的QPS一般很輕松達到5w左右,接口的看服務器配置和接口業務復雜度,一般也能達到3w的qps。

其實研究透locust后,你會發現命令參數里-U也可以叫做並發數,前提是wait time要設置為0,不設置等待時間(思考時間)。這樣才能保證無時無刻發起-U后的用戶數。

 

2. Jemter的分布式壓測

jemter的自帶有分布式壓測:Controller(主控機)、Agent(代理機),我用的是最新版(5.3)版本,分布式配置和4.x略有區別。

在Controller主機上修改jmeter.properties配置文件:

1).找到remote_hosts=,把Agent服務器的ip:端口,維護進去,如:192.168.0.1:1099,192.168.0.2:1099,102.168.1.3:1099

2).找到server.rmi.ssl.disable=false,修改為server.rmi.ssl.disable=true

3)找到jmeter.bat,運行啟動主控機

在Agent主機上修改jmeter.properties配置文件:

1).找到server.rmi.ssl.disable=false,修改為server.rmi.ssl.disable=true

2)找到jmeter-server.bat,運行啟動代理機

Controller機和Agent機,端口默認是1099,若要修改端口,可以在jmeter.properties找到“server_port=”修改端口即可
最后在Controller機jemter上,“運行”-->"遠程啟動",一台台啟動,也可以"運行"-->"遠程啟動所有",這樣分布式壓測就啟動ok了,壓測腳本會自動推送到Agent服務器上執行,不做其他配置。

 

3.Loadrunner的分布式壓測

Loadrunner的分布式壓測最簡單了,所有機子安裝好Loadrunner后,主控機在run load tests 里點擊 load generators里添加負載機的ip即可;

 

添加完后,選擇connect嘗試連接,若status狀態為ready即認為連接上了,然后你可以靈活配置這些負載機:

在上圖的第5列那可以選擇具體ip,或者所有ip執行腳本,也可以添加多個腳本,分別在不同的ip上執行,這里都可以靈活配置。

loadrunner的界面操作這些還是很強大的,不愧是性能測試工具里的標桿。但是loadrunner的缺點也很多,比如最大的缺點就是收費,當然,你可以使用破解版,另外就是loadrunner和jemter一樣,很耗CPU,

其次就是分析報告生成很慢很慢,如果你壓測的數據幾億條,光分析報告生成都需要差不多一個小時。

以上就是目前比較流行的壓測工具分布式壓測部署配置方法。

總的來說,這幾款壓測工具都還可以,如果不是被評測公司要求使用loadrunner的話,常規的開源壓測工具是首選,loadrunner安裝都需要安裝大半天,完了還得破解啥的,總之loadrunner感覺太重了。

 

文末送上loadrunner11的安裝包下載地址和破解dll和證書id。

用迅雷下載:http://www.genilogix.com/downloads/loadrunner/loadrunner-11.iso

破解文件:https://download.csdn.net/download/tengdakuaijie1/12880665

有問題的歡迎交流。

 


免責聲明!

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



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