免费压测工具

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 很多的web应用在搭建服务器完成后,为了让搭建的服务能够满足用户的访问需求,通常需要测试自己应用的并发连接能力。需要使用一些压测工具,本文介绍一些免费的开源的压测工具,可以用于简单的压力测试(实验均在Linux系统下)。
很多的web应用在搭建服务器完成后,为了让搭建的服务能够满足用户的访问需求,通常需要测试自己应用的并发连接能力。需要使用一些压测工具,本文介绍一些免费的开源的压测工具,可以用于简单的压力测试(实验均在Linux系统下)。

1.ab工具
ab的全称是Apache Bench,是Apache自带的网络压力测试工具,ab命令对发出负载的计算机要求很低,不会占用很高CPU和内存,但也能给目标服务器产生巨大的负载,能实现基础的压力测试。在进行压力测试时,最好与服务器使用交换机直连,以获取最大的网络吞吐量。(云服务器可以选择内网相连)

ab的安装很简单,安装Apache会自动安装,如果要单独安装ab,可以使用yum安装:
yum install httpd-tools –y
image

基本概念:
• 吞吐率(Requests per second)
概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests

• 并发连接数(The number of concurrent connections)
概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

• 并发用户数(The number of concurrent users,Concurrency Level)
概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。

• 用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)

• 服务器平均请求等待时间(Time per request: across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=用户平均请求等待时间/并发用户数,即Time per request / Concurrency Level

ab命令选项 可以使用 ab -–help查看全部的命令参数
ab命令最基本的参数是-n和-c:
-n 执行的请求数量
-c 并发请求个数

其他参数:
-t 测试所进行的最大秒数
-p 包含了需要POST的数据的文件
-T POST数据所使用的Content-type头信息
-k 启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求,默认时,不启用KeepAlive功能
ab –n 100 –c 10 http://39.1**.15.233/home/ 测试的自己的网站(100请求,10并发)
image
image

网络上消耗的时间的分解:

Connection Times (ms)
min mean[+/-sd] median max
Connect: 2 43 197.3 2 1008
Processing: 11 1174 1506.4 858 13033
Waiting: 10 551 1381.4 220 13026
Total: 12 1218 1489.6 1017 13039

每个请求处理时间的分布情况:
50%的处理时间在1017ms内,66%的处理时间在1441ms内...,重要的是看90%的处理时间。
Percentage of the requests served within a certain time (ms)
50% 1017
66% 1441
75% 1655
80% 1862
90% 2476
95% 3167
98% 3562
99% 13039
100% 13039 (longest request)

在实际测试的时候可以酌情增加连接数和用户数,以得到最接近准确的并发数值。

  1. Webbench
    Webbench是知名的网站压力测试工具,能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。
    webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。
    Webbench最多可以模拟3万个并发连接去测试网站的负载能力

tar -zvxf webbench-1.5.tar.gz
image
image

编译安装
image

查看命令参数提示
image

测试
webbench -c 50 -t 10 http://39.1**.**.233/home/
image

模拟五十个用户访问自己的网站10秒,请求的URL 后端如果报错,就加一个“/”。

3.http_load
http_load是一款基于Linux平台的web服务器性能测试工具,用于测试web服务器的吞吐量与负载,web页面的性能。

同样需要下载安装
wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz
tar -zvxf http_load-12mar2006.tar.gz
cd http_load-12mar2006
make && make install
image

查看帮助
image

使用
创建urls文件,文件里面写要测试的URL
vim urls
image

使用示例
./http_load -rate 5 -seconds 10 urls
-parallel 简写-p :含义是并发的用户进程数。
-fetches 简写-f :含义是总计的访问次数
-rate 简写-p :含义是每秒的访问频率
-seconds简写-s :含义是总计的访问时间
执行结果:
说明执行了一个持续时间10秒的测试,每秒的频率为5。
49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
5916 mean bytes/connection
4.89274 fetches/sec, 28945.5 bytes/sec
msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
HTTP response codes:
code 200 -- 49

结果分析:
1.49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是289884bytes,运行的时间是10.0148秒

2.5916 mean bytes/connection
说明每一连接平均传输的数据量289884/49=5916

3.4.89274 fetches/sec, 28945.5 bytes/sec
说明每秒的响应请求为4.89274,每秒传递的数据为28945.5 bytes/sec

4.msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
说明每连接的平均响应时间是28.8932 msecs,最大的响应时间44.243 msecs,最小的响应时间24.488 msecs

5.msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min

6、HTTP response codes: code 200 – 49
说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。
特殊说明:这里,我们一般会关注到的指标是fetches/sec、msecs/connect
他们分别对应的常用性能指标参数
Qpt-每秒响应用户数和response time,每连接响应用户时间。
测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论

以上介绍了三种开源免费的压测工具,使用都比较简单,类似的工具还有很多,如siege等,不再一一累述。
如果需要专业的模拟多用户的并发访问的压力测试,可以使用付费产品,如阿里云PTS压力测试。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
5月前
|
监控 Java 测试技术
性能测试:主流压测工具介绍
**性能压测工具摘要:** - Apache AB:命令行基准测试工具,简单轻量,用于评估服务器性能。 - Apache JMeter:开源Java框架,支持多种协议,适合复杂负载测试,提供丰富的图表和报告。 - nGrinder:开源,提供直观界面,支持分布式测试,录制回放脚本,实时监控。 - Locust:Python基础,适用于HTTP/WebSocket测试,可扩展,实时监控。 - LoadRunner:Micro Focus的商业工具,广泛支持多种协议,功能强大。
|
6月前
|
JSON Java 测试技术
必知的技术知识:Jmeter压测工具使用手册(完整版)
必知的技术知识:Jmeter压测工具使用手册(完整版)
|
JSON Java 测试技术
Jmeter压测工具使用手册(四)
Jmeter压测工具使用手册
266 0
|
JSON Java 测试技术
Jmeter压测工具使用手册(三)
Jmeter压测工具使用手册
217 0
|
Java 测试技术 Linux
Jmeter压测工具使用手册(一)
Jmeter压测工具使用手册
337 0
|
测试技术 调度
Jmeter压测工具使用手册(二)
Jmeter压测工具使用手册
278 0
|
网络协议 关系型数据库 MySQL
图床项目性能测试
图床项目性能测试
96 0
|
Java 测试技术 应用服务中间件
常见的网站压测工具介绍与使用
压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。
441 0
常见的网站压测工具介绍与使用
|
消息中间件 缓存 运维
性能测试技术笔记(一):如何快速上手压测工作
如果是专职做性能测试,或者刚介入一个全新的系统进行压测,想要短时间内了解业务细节是几乎不可能的。
性能测试技术笔记(一):如何快速上手压测工作
|
监控 数据管理 测试技术
性能测试技术笔记(三):如何设计一个压测平台
对于压测平台,或者说各种测试平台,其实很多同学有个误区就是:平台各种高大上牛逼,但往往忽略了开发和维护以及学习使用平台本身的成本。
性能测试技术笔记(三):如何设计一个压测平台