搞么罗 2019-04-01 17:15:41 浏览 26 评论 0
阿里云
服务器
性能
Apache
测试
性能测试
压力测试
云服务器 ECS
摘要: 项目做好了, 能不能顺利上线? 一般来说我们需要做一下压力测试来判断. 比如该项目上线后预计每天一百万的接口访问量, 并且访问时段主要集中在早八点到晚八点, 那么平均下来 RPS 大约是 22 次左右.....
项目做好了, 能不能顺利上线?
一般来说我们需要做一下压力测试来判断. 比如该项目上线后预计每天一百万的接口访问量, 并且访问时段主要集中在早八点到晚八点, 那么平均下来 RPS 大约是 22 次左右, 不过用户的访问量通常不会很平均, 假设峰值流量是平均流量的 3 到 5 倍的话, 那么我们可以推断出项目要想顺利上线, RPS 至少应该达到 66+ 次, 110+ 次更好.
由此可见上线前用压力测试工具测试 RPS 是一个很重要的环节.
下面小编给大家介绍几款 web 服务器性能压力测试工具.
一, 先说花钱的
没有钱解决不了的事, 如果有, 那一定是钱不够.
阿里云推出了一款测压服务: 阿里云性能测试 PTS https://iil.ink/alipts
阿里云的性能测试 PTS 无需安装软件; 脚本场景监控简单化, 省时, 省力; 分布式并发压测, 施压能力无上限; 快速大规模集群扩容, 支持几十万用户及百万级 TPS 性能压测; 可模拟海量用户的真实业务场景, 全方位验证业务站点的性能, 容量和稳定性.
PTS 广泛应用于各种压力测试和性能测试场景, 包括但不限于以下场景:
详细参考《如何在一分钟内发起压测? https://iil.ink/alipts1 》
二, 再说不花钱的
1,http_load
程序非常小, 解压后也不到 100K
http_load 以并行复用的方式运行, 用以测试 Web 服务器的吞吐量与负载.
但是它不同于大多数压力测试工具, 它可以以一个单一的进程运行, 一般不会把客户机搞死.
还可以测试 HTTPS 类的网站请求.
下载地址:
安装很简单
- #tar zxvf http_load-12mar2006.tar.gz
- #cd http_load-12mar2006
- #make && make install
基本用法:
http_load -p 并发访问进程数 -s 访问时间 需要访问的 URL 文件
参数其实可以自由组合, 参数之间的选择并没有什么限制.
比如你写成 http_load -parallel 5 -seconds 300 urllist.txt 也是可以的.
我们把参数给大家简单说明一下.
-parallel 简写 - p : 含义是并发的用户进程数.
-fetches 简写 - f : 含义是总计的访问次数
-rate 简写 - p : 含义是每秒的访问频率
-seconds 简写 - s : 含义是总计的访问时间
准备 URL 文件: urllist.txt, 文件格式是每行一个 URL,URL 最好超过 50-100 个测试效果比较好.
文件格式如下:
- https://iil.ink/m6c5a
- https://iil.ink/qiyeji2zhe
- https://iil.ink/rds85zhe
- https://iil.ink/txljsl
- https://iil.ink/gamedun
- https://iil.ink/duanxinsms
- https://iil.ink/alicdn
例如:
http_load -p 30 -s 60 urllist.txt
参数了解了, 我们来看运行一条命令来看看它的返回结果如下:
结果分析:
294 fetches, 30 max parallel, 3.83835e+06 bytes, in 60.0026 seconds
说明在上面的测试中运行了 294 个请求, 最大的并发进程数是 30, 总计传输的数据是 3.83835e+06bytes, 运行的时间是 60.0026 秒
13055.6 mean bytes/connection
说明每一连接平均传输的数据量 3.83835e+06/294=13055.6
4.89979 fetches/sec, 63969.7 bytes/sec
说明每秒的响应请求为 4.89979, 每秒传递的数据为 63969.7 bytes/sec
msecs/connect: 312.009 mean, 1319.57 max, 209.994 min
说明每连接的平均响应时间是 312.009 msecs, 最大的响应时间 1319.57 msecs, 最小的响应时间 209.994 msecs
- msecs/first-response: 1191.01 mean, 10212.4 max, 220.78 min
- HTTP response codes:
- 200 - 127
- code 502 - 166
说明打开响应页面的类型.
如果 403 的类型过多, 那可能要注意是否系统遇到了瓶颈.
特殊说明:
测试结果中主要的指标是 fetches/sec,msecs/connect 这个选项, 即服务器每秒能够响应的查询次数.
用这个指标来衡量性能. 似乎比 apache 的 ab 准确率要高一些, 也更有说服力一些.
Qpt - 每秒响应用户数和 response time, 每连接响应用户时间.
测试的结果主要也是看这两个值.
当然仅有这两个指标并不能完成对性能的分析, 我们还需要对服务器的 CPU,men 进行分析, 才能得出结论.
2,webbench
webbench 是 Linux 下的一个网站压力测试工具, 最多可以模拟 3 万个并发连接去测试网站的负载能力.
下载地址可以到 google 搜, 我这里给出一个
下载地址:
这个程序更小, 解压后不到 50K, 呵呵
安装非常简单
- #tar zxvf webbench-1.5.tar.gz
- #cd webbench-1.5
- #make && make install
会在当前目录生成 webbench 可执行文件, 直接可以使用了
用法: webbench -c 并发数 -t 运行测试时间 URL
例如:
- #webbench -c 1000 -t 130 https://iil.ink/m6c5a
- 3,apache bench(主要是用来测试 apache 的)
ab 是 apache 自带的一款功能强大的测试工具.
安装了 apache 一般就自带了.
用法可以查看它的说明
#./ab
参数众多, 一般我们用到的是 - n 和 - c
例如:
#webbench -c 1000 -t 130 https://iil.ink/m6c5a
这个表示同时处理 1000 个请求并运行 130 次 https://iil.ink/m6c5a 路径.
4,Siege
一款开源的压力测试工具, 可以根据配置对一个 Web 站点进行多用户的并发访问, 记录每个用户所有请求过程的相应时间, 并在一定数量的并发访问下重复进行.
Siege 官方: http://www.joedog.org/
Siege 下载:
Siege 解压并安装:
- # tar -zxvf siege-latest.tar.gz
- # cd siege-latest/
- #./configure
- #make
- #make install
Siege 使用:
#siege -c 100 -r 10 -f site.url
-c 是并发量,-r 是重复次数.
url 文件就是一个文本, 每行都是一个 url, 它会从里面随机访问的.
site.url 内容:
- https://iil.ink/m6c5a
- https://iil.ink/qiyeji2zhe
- https://iil.ink/rds85zhe
- https://iil.ink/txljsl
- https://iil.ink/gamedun
结果说明:
- Transactions: 550 hits // 完成 550 次处理
- Availability: 55.00 % //55.00 % 成功率
- Elapsed time: 31.32 secs // 总共用时
- Data transferred: 1.15 MB // 共数据传输 1.15 MB
- Response time: 3.04 secs // 显示网络连接的速度
- Transaction rate: 17.56 trans/sec // 均每秒完成 17.56 次处理: 表示服务器后
- Throughput: 0.04 MB/sec // 平均每秒传送数据
- Concurrency: 53.44 // 实际最高并发数
- Successful transactions: 433 // 成功处理次数
- Failed transactions: 450 // 失败处理次数
- Longest transaction: 15.50 // 每次传输所花最长时间
- Shortest transaction: 0.42 // 每次传输所花最短时间
总结:
相对于花钱的, 不花钱的限制肯定多一些, 而且还要费时费力的配置. 对于有大流量企业来讲, 钱已经不是事儿了, 所以能用钱解决的问题尽量别耽误时间. 这里只讲一下几种工具, 方便大家测试.
来源: https://yq.aliyun.com/articles/696269