2021-05-18 乐帮网
压力测试
Siege一直在维护,支持比较新的用法,下面就从简单的开发由简入难介绍几种常见情况。
首先一些基本的参数说明可以在这里查到:https://www.mankier.com/1/siege
(1)模拟10个客户端并发连续请求页面5次,所以一共是10*5=50次
siege -c10 -r5 https://lebang2020.cn/home.html
(2)一般情况下我们是需要测试多个网址,可以把地址写到一个文本文件中。
siege --c10 -r5 -f url.txt
url.txt中内容如下:
https://lebang2020.cn/home.html
https://lebang2020.cn/details/210518gbm55x4d.html
https://lebang2020.cn/details/210511ssm4x4d5.html
https://lebang2020.cn/details/210511c1kjaouk.html
https://lebang2020.cn/details/210511c1kjaouk.html
https://lebang2020.cn/details/210414foiitnwo.html
这个才是最常用的方式。
(3)携带cookie 身份信息等
siege --c10 -r1 -H 'Cookie: .AspNetCore.Antiforgery.6zNHCGLV2do=CfDJ8Kc2C9tkfqhAuAPYjE3D5eaWyTCfASIuuPep5D0lrW_ipEVSmCVSDvVPwp1nWqg4_uSX6pbaO0N8nWb_kUpC715INxYz9Ni8-jwmi4enQloutKtsqQxwRFI3FIT9qJ6diDY-f_xc0CIrYRb0NkONSD0; VKTCMS=CfDJ8Kc2C9tkfqhAuAPYjE3D5ebhF-hgME9WvpeUr4-7fCRHailIDWBVWVSPnyXQ52CyR0FfLbFUyPYAzumYzuZ2jWibywDh7W7wKgcjCXMQjDiw1wDX8pUjuV_Wy2B-eDkd10jV8fPnuTspUAvgYXtghv2A4l9B38NW9LxT7312OUC35NjFhy4JuvvIab5rbmscGfAiNV8O6_jDueQUVcXRGweAksMPCk3ovl07hudo2_hT9fvFQo3cudgUbdjW6ORLfbSA93hCT68nro4hyt8UNyoTzsgf1ZMiKJlIosIK9_5-uTGGn0ZWQWFY5ii5PdaZuls3zNyYGDBA7XP1Ml2MDdyj4vzG_gV8pS_IG4PJKJPQd9yV59E3je3GcNJo_E6QHA; __gads=ID=dc58d829b3a8fcf2-221e76316dc50084:T=1609572023:RT=1609572023:S=ALNI_MYovcIJaMtkTEn9d5osig7cVe90yA; __51cke__=; __tins__20923695=%7B%22sid%22%3A%201621263870596%2C%20%22vd%22%3A%203%2C%20%22expires%22%3A%201621265674994%7D; __51laig__=29' https://lebang2020.cn/home.html
延申阅读,添加多个头部信息:
siege -c10 -r5 -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' https://lebang2020.cn/home.html
(4)发起一个带参数的Post请求
siege --concurrent=5 --content-type="text/plain" 'https://lebang2020.cn/home.html POST name=lebang2020&password=123456'
如果是携带Json格式的可以这样写
siege --concurrent=5 --content-type="application/json" 'https://lebang2020.cn/home.html POST {"name":"lebang2020","password":"123456"}'
参数比较大可以放到文件中
siege --concurrent=5 --content-type="application/json" 'https://lebang2020.cn/home.html POST < /home/hy/apifile.txt'
apifile.txt中参数是纯json格式
{"name":"lebang2020","password":"123456"}
(5)测试api携带Auth 的Token参数
siege --concurrent=10 --reps=5 --header="Authorization:Bearer u9lKvEDXLbsQpOAq4zvjUYaYENp-omCZJsOnmv_6Pfzi3M0qJP4qaKVgqb2iYNsI8JqtLJDZsG4TD_VaoCiCF5KgRdWKyLJrJzT4TV0UwrPmZrDGRbdM4IozKEnpXPp2ROfBhqHgBCSJx_k5xEzIXoruV-wWCwgLbvXOi0nSyKNPwGK-IhuzTwehpGxfCx9bA-XeAM7eV5nwKzViMsdc6mODdyo25c7CfQW6CC1YYAJwCo46HnpDOot4xMJQdprr" --content-type="application/json" 'http://lebang2020.cn/api/UploadData POST {"name":"lebang2020.cn"}'
注意:--header 和上面的-H是一样的效果可参见上方的使用手册。
(6)真正的高级应用来了 先看一下它的配置文件:https://github.com/JoeDog/siege/blob/master/doc/siegerc.in
看到以上内容后是不是有了更多的想法?
这里只简单的举例,做一个抛砖引玉。我可以同时测试网站许多页面和接口,有的需要token有的不需要,众多网页需要的参数也不一样,那么我们应该怎么启用测试呢?我们可以结合配置文件使用 连接命令。示例如下:
siege -f get_urls.txt & siege -H 'Content-Type: text/json' -f post_json_urls.txt
此时的get_url.txt内容
https://lebang2020.cn/home.html
https://lebang2020.cn/details/210511ssm4x4d5.html
https://lebang2020.cn/details/210511c1kjaouk.html
https://lebang2020.cn/details/210511c1kjaouk.html
post_json_urls.txt内容
'http://lebang2020.cn/api/UploadData POST {"name":"lebang2020.cn"}'
'http://lebang2020.cn/api/2 POST {"name":"lebang2020.cn"}'
'http://lebang2020.cn/api/3 POST {"name":"lebang2020.cn"}'
关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com
庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力