压力测试 - HTTP压测工具stress指南
2019.03.19重新修改(之前的使用安装方式有误!)
Stress安装指南
github地址:https://github.com/buaazp/stress
使用环境:macOS 或者 Linux (Windows用户请安装虚拟机或者Linux服务,如git工具)
编译环境:需要安装GO环境(go环境安装)
操作流程:
1. 确保安装了go服务且在Unix or unx内核系统下操作
2. 执行指令
go get github.com/buaazp/stress
注意:执行可能会报错,如
看下意思就知道,是perks这个代码库拉取失败,你可以直接手动在/Users/jzc/go/src/github.com/bmizerany/路径(具体路径看你自己的电脑)下使用 git clone https://github.com/bmizerany/perks, 或者再次执行指令尝试
3. 下载完代码库后我们会在我们的 GOPATH 路径下的src中,新增了文件,然后我们执行
go install github.com/buaazp/stress
完成后进行stress项目路径,如我的是
4. 执行
sh release.sh
截图:
5. 这里一共下载了四个包,其中:
linux:即Linux所使用的包
darwin:macOS所使用的包
386:32位
amd64:64位
大家选择自己需要的包解压即可,执行
//我这里使用的是macOS系统
tar zxvf stress-darwin-386.tar.gz
6. 执行 ls -l 指令查看下文件
执行
./stress -h
出现下图说明安装成功
Stress使用指南
安装完成后,自然是使用它来进行压测了
stress提供了两种方式,简单的说,一种就是固定速率,持续一定时间,另一种是固定的请求数,以多线程形式持续发送(时间不固定)
固定速率形式:
./stress attack -header="host:www.baidu.com" -targets=file/test.txt -rate=10 -duration=60s
多线程形式:
./stress attack -header="host:www.baidu.com" -targets=file/test.txt -c=10 -n=100
上面的rate(每秒请求数)就可以近似看为QPS,上面的例子一共发了600个请求
其中,targets是我们要请求的地址,支持GET和POST请求
你可以创建一个文件,写入 GET https://www.baidu.com
更多使用方式请参考:stress使用
执行效果:
关于报告
stress的请求报告默认写入result.json,需要修改名称可以在请求时添加参数
./stress attack -header="host:www.baidu.com" -targets=file/test.txt -rate=10 -duration=10s -output=1.txt
已经生成的报告可以通过指令来修改格式,支持text,json,plot三种
./stress report -input=result.json -output=test.txt -reporter=text
最后
请谨慎设置请求数值。。。
请求QPS上限理论上来说取决于机器性能和操作系统文件打开数上限(文件描述符数量)
(我在我的处理器2.3 GHz Intel Core i5,内存16 GB 2133 MHz LPDDR3下,500QPS轻松无压力)
-----------------------------------------------------下面是未修改原文----------------------------------------------------------
对于大型项目来说,高并发高流量的场景是必然的,这种时候压力测试就非常必要,而现在的压测工具良莠不齐,而且好多的是付费的,效果也不怎么好。
这次我主要是在一个定时红包雨的活动中(该活动的接口放在一个流量比较大的模块内),由于用户的请求都是在几秒内同时发出,所以一旦用户基数过大就可能对集群的承载造成威胁,万一把集群搞挂了那我可能就要收拾行李滚蛋了。。所以为了自己安全,做个压测是必要的。
这里我使用的是gitlab上的开源工具stress,发送的是http请求,这次我使用的是POST方式施压,当然还有还有一些其他方式,具体参照https://github.com/buaazp/stress/tree/master/doc文档说明
该工具使用比较简单,选两台服务器一台作为施压,另一台被施压,然后在施压的过程中看下服务器的状态,以及nmq消息队列中的处理速度。
这边我们在gitlab上下载好工具,上传到服务器然后解压,然后运行release.sh脚本就行了,这里可能会报一些错误,应该是脚本有些命令识别不了,不过只要把工具包下载下来就没问题。
然后选择自己对应的包解压,我这次使用的是stress-darwin-amd64.tar.gz,解压完没看到新增东西,不过我们输入stress,能看到提示的话说明工具就能使用了
ok,然后写个txt里面加入我们的接口位置就可以开始压测了!
stress attack -targets=test.txt -c=100 -n=10
这里的参数具体看文档,一般自己估摸下自己的场景qps峰值能到多少,这次我估计的是到300.
不过由于用的被施压的服务器配置不行,,差点把它搞崩溃了,处理了二十多分钟才处理完所有请求
不过这个工具后面应该还可以完善,等自己实力更高一些再回头来钻研下
具体还有些数据大家自己压测的时候也要注意
这次红包雨为了防止请求数太大,采用了现将请求放到nmq中,然后再慢慢处理,其中将结果先直接返回给用户,红包的数据之后慢慢写到db里,而且为了防止用户反复发送请求,使用memorycache缓存用户的红包结果。
百度云stress工具下载,以及我的压测结果报告也在其中,仅供参考
链接:https://pan.baidu.com/s/1nwXtg8p 密码:uue1
关注微信公众号,给你好看
压力测试 - HTTP压测工具stress指南相关推荐
- 从零开始自制实现WebServer(十八)---- 对服务器做最后的压力测试 WebBench压测小工具 项目迎来终章
文章目录 全流程实现博客链接 前引 (十八)---- 对服务器做最后的压力测试 WebBench压测小工具 项目迎来终章 1.正确处理Vmware-Station 处理器设置(初步调试过程) 2.正确 ...
- 压测工具stress
1.下载压测工具stress $ sudo apt-get install stress 参数说明: -? 显示帮助信息 -v 显示版本号 -q 不显示运行信息 -n 显示已完成的指令情况 -t -- ...
- linux压测工具stress和stress-ng下载
1. 下载 2020/5/16实测以下地址能下载 stress: https://fossies.org/linux/privat/stress-1.0.4.tar.gz/ stress-ng htt ...
- Linux 压测工具 stress 安装下载使用
stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户. 第一种 下载地址https://fossies.org/linux/privat/st ...
- linux压测工具stress安装使用
下载地址 https://fossies.org/linux/privat/stress-1.0.4.tar.gz/ 或百度网盘 链接:https://pan.baidu.com/s/14Y23d7a ...
- Linux压测工具Stress安装与使用
下载: wget -P /home/ http://people.seas.harvard.edu/~apw/stress/stress-1.0.4.tar.gz 如上面下载方法无效可以用下面方法下载 ...
- Http压测工具wrk使用指南【转】
用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...
- Http压测工具wrk使用指南
用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...
- 【腾讯优测干货分享】从压测工具谈并发、压力、吞吐量
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/580d914e07b7fc1c26a0cf7c 前言 随着部门业务的拓展,我们有 ...
- linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...
压测工具其它有用工具 在这里,我们会讨论主要的压力测试工具,选择合适的压测工具,才能准确衡量系统性能.好的压测工具有很多,可能的功能如下: 发起压力 监控性能 监控系统使用率 生成报告 基准测试无非就 ...
最新文章
- 白话Elasticsearch03- 结构化搜索之基于bool组合多个filter条件来搜索数据
- java xml字符串提取元素,如何从Java中将子元素从XML提取到字符串?
- [RabbitMQ]创建Java开发环境_消费者_生产者
- oracle表空间不足
- 炫界 (978) -(建工发现应用克隆漏)_除了DMA,这些漏损点检测与漏损区域识别技术你知道么?...
- [原]sencha touch之表单(login demo)
- 使用Maven构建Web项目-测试
- JAVA-初步认识-第十章-多态-类型判断-instanceof
- java如何对单词排序_java - 如何按第二个单词对列表进行排序? [重复] - SO中文参考 - www.soinside.com...
- 3.4实训任务 Hadoop环境搭建与安装
- 2020计算机组成原理课程设计(桂电)
- kindle mysql_MySQL(二) MySQL基本操作
- HUAWEI 机试题:VLAN资源池
- 外卖行业现状分析_2020年中国外卖行业市场现状和发展趋势分析 外卖下沉趋势明显「组图」...
- 橡胶支座抗压弹性模量计算公式_橡胶支座计算
- 实现echarts图多个legend图例和自定义legend中字体颜色
- JS 无形装逼,最为致命
- linux系统怎么制作win10,win10 + linux 制作双系统教程(我本身是win10系统)
- 苏嵌嵌入式linux实训 第1天
- SAP gui 770 下载