压测合集
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