常见的网站压测工具介绍与使用

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。

压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。

Apache Ab

Apache Benchmark(简称ab) 是Apache安装包中自带的压力测试工具 ,简单易用。 使用起来非常的简单和方便。 不仅仅是可以apache服务器进行网站访问压力测试,还可以对其他类型的服务器进行压力测试。 比如nginx,tomcat,IIS等

官网:http://httpd.apache.org/docs/2.2/programs/ab.html

参数说明

Usage: ab [options] [http[s]://]hostname[:port]/path
用法:ab [选项] 地址

选项:
Options are:
    -n requests    #执行的请求数,即一共发起多少请求。
    -c concurrency    #请求并发数。
    -t timelimit    #测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
    -s timeout    #指定每个请求的超时时间,默认是30秒。
    -b windowsize    #指定tcp窗口的大小,单位是字节。
    -B address    #指定在发起连接时绑定的ip地址是什么。
    -p postfile    #指定要POST的文件,同时要设置-T参数。
    -u putfile    #指定要PUT的文件,同时要设置-T参数。
    -T content-type    #指定使用POST或PUT上传文本时的文本类型,默认是'text/plain'。
    -v verbosity    #设置详细模式等级。
    -w    #将结果输出到html的表中。
    -i    #使用HEAD方式代替GET发起请求。
    -y attributes    #以表格方式输出时,设置html表格tr属性。
    -z attributes    #以表格方式输出时,设置html表格th或td属性。
    -C attribute    #添加cookie,比如'Apache=1234'。(可重复)
    -H attribute    #为请求追加一个额外的头部,比如'Accept-Encoding: gzip'。(可重复)
    -A attribute    #对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。
    -P attribute    #对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
    -X proxy:port   #指定代理服务器的IP和端口。
    -V              #打印版本信息。
    -k              #启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。
    -d              #不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。
    -q              #如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息。
    -g filename     #把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。
    -e filename     #产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。
    -r              #当收到错误时不要退出。
    -h              #输出帮助信息
    -Z ciphersuite  指定SSL/TLS密码套件
    -f protocol     指定SSL/TLS协议(SSL3, TLS1, TLS1.1, TLS1.2 or ALL)

压测测试

ab -c 10 -n 1000 -k "http://www.baidu.com/"
This is ApacheBench, Version 2.3 <{
   
   mathJaxContainer[0]}>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.baidu.com (be patient)
Completed 100 requests                   //* 已完成请求数
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        BWS/1.1          //* 请求的服务器名称、版本号
Server Hostname:        www.baidu.com    //* 请求的地址
Server Port:            80               //* 请求的端口号

Document Path:          /                //* 请求的绝对路径,即具体接口名称
Document Length:        199875 bytes     //* 响应数据的大小

Concurrency Level:      10              //* 并发用户数
Time taken for tests:   14.567 seconds  //* 测试总耗时 ,单位:s
Complete requests:      1000            //* 总请求数
Failed requests:        988             //* 失败总请求数
   (Connect: 0, Receive: 0, Length: 988, Exceptions: 0) 
Write errors:           0                //* 发送请求失败的次数
Total transferred:      198476425 bytes   //* 从服务端收到的总字节数
HTML transferred:       197338475 bytes   //* 从服务端收到的总文档字节数,即不包含Total transferred中的HTTP头信息
Requests per second:    68.65 [#/sec] (mean)  //* 平均每秒请求数,即吞吐量
Time per request:       145.672 [ms] (mean)   //* 平均每次请求并发用户总耗时,即 该值=平均每次请求耗时 * 并发数  ,单位:ms
Time per request:       14.567 [ms] (mean, across all concurrent requests) //* 平均每次请求耗时 ,单位:ms
Transfer rate:          13305.53 [Kbytes/sec] received                  //* 服务端每秒响应的数据大小,单位: kb/s

Connection Times (ms)                       //* 网络耗时 (依次是:最小、平均、标准偏差、中位数、最大) ,单位:ms
              min  mean[+/-sd] median   max
Connect:        6   16  89.3      8    1011
Processing:    22  127 160.5     73    1919
Waiting:        8   23  53.5     10     499
Total:         28  143 182.4     82    1927

Percentage of the requests served within a certain time (ms)   //* 请求耗时分布情况百分比 ,单位:ms 
  50%     82
  66%    105
  75%    134
  80%    284
  90%    321                                                  //* 表示 90%的请求在 321ms 内得到服务端响应结果
  95%    367
  98%    746
  99%   1038
 100%   1927 (longest request)

Jmeter

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

Windows 安装

Mac 安装

JavaJDK 安装

JDK安装此处略去,不作为文本的介绍的重点,读者可自行Google。

Jmeter安装

进入JMeter的下载地址页面,如下图,有两个版本可供下载

  • Binaries:二进制版,即已经编译好、可直接执行;
  • Source:源代码版,需要自己编译;

将此软件下载后,进行解压

image-20210428172549027

启动jmeter

进入 jmeter 的 bin 目录,执行 sh jmeter 命令,即可启动 jmeter 软件

image-20210428173312994

改为中文

image-20210428173207009

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
JSON 网络协议 Java
图文详解压力测试工具JMeter的安装与使用
压力测试是目前大型网站系统的设计和开发中不可或缺的环节,通常会和容量预估等工作结合在一起,穿插在系统开发的不同方案。压力测试可以帮助我们及时发现系统的性能短板和瓶颈问题,在这个基础在上再进行针对性的性能优化,也可以帮助我们预估系统的承载能力,使我们能根据其做出一些应对措施。
1255 0
图文详解压力测试工具JMeter的安装与使用
|
5月前
|
监控 Java 测试技术
性能测试:主流压测工具介绍
**性能压测工具摘要:** - Apache AB:命令行基准测试工具,简单轻量,用于评估服务器性能。 - Apache JMeter:开源Java框架,支持多种协议,适合复杂负载测试,提供丰富的图表和报告。 - nGrinder:开源,提供直观界面,支持分布式测试,录制回放脚本,实时监控。 - Locust:Python基础,适用于HTTP/WebSocket测试,可扩展,实时监控。 - LoadRunner:Micro Focus的商业工具,广泛支持多种协议,功能强大。
|
6月前
|
JSON Java 测试技术
必知的技术知识:Jmeter压测工具使用手册(完整版)
必知的技术知识:Jmeter压测工具使用手册(完整版)
|
JSON Java 测试技术
Jmeter压测工具使用手册(三)
Jmeter压测工具使用手册
217 0
|
测试技术 调度
Jmeter压测工具使用手册(二)
Jmeter压测工具使用手册
279 0
|
JSON Java 测试技术
Jmeter压测工具使用手册(四)
Jmeter压测工具使用手册
266 0
|
Java 测试技术 Linux
Jmeter压测工具使用手册(一)
Jmeter压测工具使用手册
337 0
|
消息中间件 缓存 运维
性能测试技术笔记(一):如何快速上手压测工作
如果是专职做性能测试,或者刚介入一个全新的系统进行压测,想要短时间内了解业务细节是几乎不可能的。
性能测试技术笔记(一):如何快速上手压测工作
|
Java 测试技术 API
阿里云PTS-原生JMeter压测实战-云测试
阿里云PTS-原生JMeter压测实战-云测试
阿里云PTS-原生JMeter压测实战-云测试
|
测试技术 Apache
免费压测工具
很多的web应用在搭建服务器完成后,为了让搭建的服务能够满足用户的访问需求,通常需要测试自己应用的并发连接能力。需要使用一些压测工具,本文介绍一些免费的开源的压测工具,可以用于简单的压力测试(实验均在Linux系统下)。
9141 0