压力测试 - HTTP压测工具stress指南

article/2025/9/23 17:21:04

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是我们要请求的地址,支持GETPOST请求

你可以创建一个文件,写入   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://chatgpt.dhexx.cn/article/591qHyyU.shtml

相关文章

jmeter进行http压力测试(图文小教程)

下载地址:http://jmeter.apache.org/download_jmeter.cgi JMeter基于Java开发,需要系统有安装JDK环境。解压后进入bin目录,点击jmeter.bat​​​​​​​ 1、添加线程组: 测试计划 -> 添加 -> Threads(User) -> 线程组…

如何使用Jemeter对HTTP接口压测

我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等)都可以使用该工具。但我并不鼓励这样做,我们应该根据当前…

siege安装测试

Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。 1、Siege是一个多线程ht…

springboot 网页聊天室

基于springboot的网页聊天室,采用websocket通信协议,可以进行多人聊天,单人聊天,群发功能。 1:输入昵称登录 2:聊天界面 下载完成后使用maven下载资源包,运行后使用127.0.0.1/login登录可进行…

网页版多人聊天室系统

网页版多人聊天室系统 SockJSSpringSpringMVCMybatiesEasyUIMysqlTomcat7Jdk7 兼容IE8 源代码下载:https://download.csdn.net/download/u014644574/11420820

【IM-03】Web端匿名聊天

前沿 Web端主要是集成SocketIO,然后部署到服务器的一个过程,入门的一个渠道。 第一篇:即时通信解决方案 第二篇:推送解决方案 第三篇:Web端匿名聊天 第四篇:iOS集成单聊&群聊 1.Web端匿名聊天主要是功能…

java如何实现web页面聊天_Java和websocket实现网页聊天室

WebSocket protocol 是HTML5一种新的协议,它实现了浏览器与服务器全双工通信(full-duplex)。接下来将实现一个websocket的网页聊天室的demo,前端框架会使用amazeUI,后台使用Java,网页编辑器使用UMEditor。 涉及知识 网页前端(HTML…

vue + element-ui 聊天_vue网页版聊天Vue+ElementUI仿微信界面聊天实例

vue+vuex+vue-cli+vue-router+element-ui+swiper等技术开发仿微信pc端界面聊天应用,实现了发送消息+表情(动图gif)、图片/视频预览、右键长按菜单、红包/朋友圈、截图发送等功能。 技术栈 vue版本:Vue2.5.6状态管理:Vuex页面路由:Vue-routericonfont图标:阿里巴巴字体图标…

2023 人工智能在线聊天机器人网页HTML源码

测试了一下就是对接的外部接口,无加密有能力的可以二开。使用教程,上传主机,服务器后解压使用,当然了,电脑解压后点击index.html也能用。

网页进行QQ聊天简单应用

在网页上唤醒QQ聊天 ---- 网页上用到在线客服之类的解决方案 想在网页上做一个在线客服的功能,其实可以用腾讯提供的方法,只要打开链接就能进行QQ聊天 ◆腾讯提供的代码为:(腾讯官方链接: http://is.qq.com/webprese…

多语言国际版在线聊天室/匿名在线聊天室/语音聊天室/网页APP聊天室

私人聊天消息/一对一聊天 私人或一对一聊天功能可供用户无缝聊天。他们可以使用此功能私下分享任何他们想要的东西。管理员可以通过管理仪表板轻松管理私人聊天。 多语言支持 QuChat带有一个内置的语言和翻译管理器。您可以有效地添加自己的语言和翻译。QuChat可以翻译成任何…

html网页直播实时聊天,一分钟实现网页多人聊天室【Socket.IO】

socket.io是个基于node.js的快平台实时通讯框架。只用不到10行代码,就可以搭建一个简单的多人实时聊天室。 先来看看运行后的效果: socket.io多人聊天室 只要简单几步,就可以实现。在这里我们使用本机作为服务端。 安装node.js 由于socket.io使用node.js为服务端,所以必须安…

如何实现网页视频聊天?

在网页里实现文字聊天是比较容易的,但若要实现视频聊天,就比较麻烦了。这里,我们将实现一个简单的网页版视频聊天Demo,可以支持所有类型的浏览器。 本Demo除了视频聊天功能外,还包含以下功能: 1.上下线通知…

qq不加好友实现网页在线聊天(qq在线客服)

需求 再网页中添加自己的qq,方便别人联系你,但是有的时候仅仅是询问一些问题,并不需要加好友,那么此时使用qq官方的推广工具就非常方便了。 官网地址:qq推广 开通免费推广功能后,就可以直接通过点击网页上…

php源码 网页聊天_php即时在线网页聊天源码-响应式设计自适应手机端

基于PHP WebSocket即时通讯开发的在线聊天源码,使用高效优雅的 Laravel 框架进行非通讯部分开发。前台与后台自适应PC与移动端,支持一对多交流,可以自由创建新的房间与解散创建的房间,集成签到功能,等级功能&#xff0…

【亲测可运营】PHP匿名在线聊天室/语音聊天室/多国语言版在线聊天室

简介 PHP匿名在线聊天室源码/自定义群组聊天系统/可设置密码支持自适应多端访问运营版,一款支持多国语言的在线群聊系统源码,可以新建一个群组,然后设置密码,或者公开访问都可以,聊天都是匿名的,方式还是不…

Java网页版仿QQ实现在线聊天功能

疫情期间,整天闷在家里又不能聚会,大把的空余时间差点让我发霉,后来有个客户发来新年祝贺,让我突然想起了一件事情,就是他曾经提起过,要是在后台管理系统里面整合个聊天功能该多好啊,有了这个念…

基于PHP的在线聊天室(网页版)

前言 此项目免费分享(群文件中获取) 交流群:758350964(已满) 交流群2:511496356 一 项目介绍 基于PHP的在线聊天室(网页版) 技术栈 phpmysqlbootstrap 可搭建在phpstudy下快速部署 二 主要功能 1 注册/登录 2 聊天功能 3 撤回功能 4 查看群成员 三…

网页版聊天服务器,网页版在线聊天室

引言 实现网页版的在线聊天室的方法有很多,在没有来到HTML5之前,常见的有:定时轮询、长连接+长轮询、基于第三方插件(如FLASH的Socket),而如果是HTML5,则比较简单,可以直接使用WebSocket,当然HTML5目前在PC端并没有被所有浏览器支持,所以我的这个聊天室仍是基于长连接+…

网页版QQ、MSN等等聊天工具web版大全

首发地址 http://www.178good.cn/178/Html/?209.html 相关网址:聊天工具大全 http://www.178good.cn/178good/soft/liaotian.html MM是个十足的聊天迷,走到哪里聊到哪里。不光酷爱聊天,并且诸如MSN、Yahoo Messenger、Google Talk等即时通讯软件(IM)上都有很多的好友。…