压测合集

wrk压测的lua脚本里面的参数使用随机列表与随机字符串

压测: wrk压测的lua脚本使用随机列表与字符串参数

wrk

我自己的B站文章地址

https://www.bilibili.com/read/cv20239103?spm_id_from=333.999.list.card_article.click

说明

1、参考文章:

https://segmentfault.com/a/1190000023212126

https://www.cnblogs.com/quanxiaoha/p/10661650.html

https://blog.csdn.net/qq_27944707/article/details/103634515

说明:

JMeter偏向于界面化操作,自己本地可以安装,但是如果在linux服务器中还是得用wrk这样的命令工具。

 

2-1、mac安装wrk:

brew install wrk

 

2-2、看一下测试用的flask服务的代码

(1)❗️flask跑起来以后,老是往终端打印东西太麻烦,可以用nohup > /dev/null 

❗️nohup python3 flask_server.py > /dev/null

(2) 查看端口占用进程:lsof -i:9000

 

3、使用 wrk -h 看一下命令支持的参数,比较重要的是下面几个参数:

(1)-c:与服务器保持的http连接数

(2)-d:压测时间

(3)-t:使用线程数,这个参数的设定需要跟本电脑的CPU核数保持一个关系——线程数等于电脑CPU核数的2倍

(4)-s:自定义lua脚本的路径

(5)我的电脑的核是4核,所以设置-t参数为8(活动监视器下双击CPU负载可以看),然后http连接数设置为200个,压测时间设置为5秒:

 

4、简单的get请求:

(1)

wrk -d5s -c200 -t8 http://127.0.0.1:9000/index\?name\=whw

(2)

加上time.sleep 再看看结果

 

5、post请求需要用lua脚本:

wrk.method = "POST"

-- 如果下面contentType是application/json用下面的json格式,如果是form表单用a=1&b=2这种格式

wrk.body  = "{"userId":123,"activityId":187}"

wrk.headers["Content-Type"] = "application/json"

 

wrk -d5s -c200 -t8 -s wrk_test.lua http://127.0.0.1:9000/index

 

6、测试报告的含义:

https://www.cnblogs.com/quanxiaoha/p/10661650.html

 

7、其他复杂的测试,可以看官方的scripts脚本的写法:

https://github.com/wg/wrk/tree/master/scripts

例如:需要登录认证的接口,查询不用 id 的数据(相同 id 服务端可能有缓存,达不到真实压测效果) 

 

sysbench

https://www.bilibili.com/read/cv20241019?spm_id_from=333.999.list.card_article.click

ghz

https://www.bilibili.com/read/cv20275820?spm_id_from=333.999.list.card_article.click

posted on 2023-01-26 16:12  江湖乄夜雨  阅读(39)  评论(0编辑  收藏  举报