本文的核心内容:ab压测与Siege压测工具的使用。


为了测试接口的性能、我们需要对接口进行压力测试,看看接口能承受多大访问量、在大访问量情况下性能怎样,这些数据指标好坏将会直接影响接口调用方的前端展示效果。

Web压力测试指标

      1.TPStransaction per second

  每秒钟完成的web请求响应数量

  TPS=并发数/响应时间

  TPS是衡量系统性能的重要指标

  2.并发数

  并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。

  3.响应时间

  响应时间是指系统对请求作出响应的时间。

  4.吞吐量

  吞吐量指的是单位时间系统传输数据总量。

  可知吞吐量和TPS,并发数这两个因素是正比关系。

  但是当TPS,并发数达到极限值时,吞吐量不升反降,这是因为系统资源产生了大的消耗。

ab 测试

ab是apachebench命令的缩写。

ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、tomcat等其它Web服务器的压力。

1)ab安装

yum -y install httpd-tools[root@vic html]# ab -V
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

2)ab 常用参数

常用请求参数:-n请求次数,-c并发数 -X 代理ip:代理端口-n requests     请求次数-c concurrency  并发数-t timelimit    持续测试时间 单位[s]-X proxy:port   代理ip:代理端口
ab -n 100 -c 10 https://www.baidu.com/

3)测试报告说明:

一般我们需要关心 Requests per second和 Transfer rate。 一般接口rps需要满足>=300,并且 99.9的响应请求保证在300ms内
Connection Times (ms)和请求响应时间分布(Percentage of the requests served within a certain time (ms)) 几部分进行分析This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
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).....doneServer Software:        BWS/1.1
Server Hostname:        www.baidu.com
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128Document Path:          /
Document Length:        227 bytesConcurrency Level:      10
Time taken for tests:   0.497 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      108197 bytes
HTML transferred:       22700 bytes
Requests per second:    201.39 [#/sec] (mean)
Time per request:       49.655 [ms] (mean)
Time per request:       4.966 [ms] (mean, across all concurrent requests)
Transfer rate:          212.79 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:       26   33   3.7     33      49
Processing:     9   11   1.0     11      16
Waiting:        9   11   1.0     11      16
Total:         35   44   4.2     43      66Percentage of the requests served within a certain time (ms)50%     4366%     4575%     4680%     4690%     4895%     5098%     5699%     66100%     66 (longest request)这个表第一行表示有50%的请求都是在43ms内完成的, 以此类推,99%的请求是小于等于9ms的。

siege 测试

安装siege

为了支持https,需要先下载安装openssl
openssl地址:https://github.com/openssl/openssl

git clone https://github.com/openssl/openssl
cd openssl
./config --prefix=/usr/local/openssl
make
make install
openssl version

openssl安装完毕后,开始安装siege
siege地址:http://download.joedog.org/siege/siege-4.0.4.tar.gz

tar zxvf siege-4.0.4.tar.gz
cd siege-4.0.4
make clean
./configure --prefix=/usr/local/siege --with-ssl=/usr/local/openssl
make
make install

注意:siege默认只支持255个并发数,可以自己自定义,修改/root/.siege/siege.conf下的limit数值。

1)使用说明

使用方式:  siege [options] URL
示例: siege -c 10 -t 1m $url  模拟10个用户并发请求$url,持续1分钟

2)多url测试

1. 登录测试服务器准备需要模拟的请求列表文件,文件内容每行一个urlurl格式 http://host[:port]/request_uri2. 请求示例: siege -c 200 -t 10s  -f url.txt  并发100个用户持续10s, 随机从文件url.txt读取url
Options:
-g, --get                 Get请求
-c, --concurrent=NUM      并发请求数,默认 10
-r, --reps=NUM            循环测试次数
-t, --time=NUMm           测试时长: m[分],s[秒],H[小时] -t 1H 标识测试1小时
-d, --delay=NUM           两次读取url延迟请求间隔时间
-b, --benchmark           两次读取url间隔时间0,没有延迟
-i, --internet            随机读取url
-f, --file=FILE           FILE, select a specific URLS FILE.
-l, --log[=FILE]          LOG to FILE. If FILE is not specified, thedefault is used: PREFIX/var/siege.log
-H, --header="text"       Add a header to request (can be many)
-A, --user-agent="text"   Sets User-Agent in request
-T, --content-type="text" Sets Content-Type in request--no-parser           NO PARSER, turn off the HTML page parser--no-follow           NO FOLLOW, do not follow HTTP redirects

3)测试报告说明

siege -c 100 -t  10s  http://www.baidu.com

Lifting the server siege...
Transactions:                  33554 hits  总请求次数
Availability:                 100.00 %     成功率
Elapsed time:                  59.67 secs   执行时间
Data transferred:              74.03 MB     总数据传输大小
Response time:                  0.18 secs    响应时间,显示网络连接的速度
Transaction rate:             562.33 trans/sec  平均每秒完成次处理请求数
Throughput:                     1.24 MB/sec   平均每秒传输数据
Concurrency:                   99.70          最大连接数
Successful transactions:       33554         成功请求次数
Failed transactions:               0          失败请求次数
Longest transaction:            1.17          最长请求时间
Shortest transaction:           0.00          最短请求时间

ab压测与siege压测相关推荐

  1. web版本 开源压测工具_Web压测工具之Webbench和http_load

    Webbench简介 是知名的网站压力测试工具,能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况. webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每 ...

  2. 性能优化与压测引擎一:压测框架gatling

    性能优化与压测引擎一:压测框架gatling 压测框架gatling 简单使用介绍 压测框架gatling 说到压测,我们最熟悉的可能就是ab命令和jmeter了,确实他们很方便,但是我最近都在用另外 ...

  3. 不看我真的会很伤心【压测工具:提升系统性能的利器】,查看TPS,计算TPS,计算压测指标、压测名词解释、教大家如何压测

    目录 前言 一.压测是什么? 二.为什么要压测? 三. 压测名词解释 1.压测类型解释 2.压测名词解释 3.机器性能指标解释 4.访问指标解释 四.如何计算压测指标 五.常见的压测工具 1.JMet ...

  4. 如何做好性能压测(一)丨压测环境设计和搭建

    简介:如何做好性能压测(一)丨压测环境设计和搭建 一般来说,保证执行性能压测的环境和生产环境高度一致是执行一次有效性能压测的首要原则.有时候,即便是压测环境和生产环境有很细微的差别,都有可能导致整个压 ...

  5. Jmeter阶梯式压测与普通压测区别

    1.普通的压测方式,并发的线程数是可预知的:而阶梯压测是未知的. 普通压测,只要参数不变,每次结束后,#Samples一定是线程数×循环次数. 而阶梯式压测,每次的Samples都是变化的. 注:一个 ...

  6. jdk自带压测工具_jmeter压测工具

    一.目录文件讲解 目录 bin:核心可执行文件,包含配置 mac/linux:使用jmeter启动 windows:使用jmeter.bat启动 jmeter-server:mac/linux分布式压 ...

  7. java 解压文件_java实现解压zip文件,(亲测可用)!!!!!!

    项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...

  8. STM32定时器捕获编码器模式测速和方向测不准问题

    ** STM32定时器捕获编码器模式测速和方向测不准问题 问题概述 关于STM32编码器模式电机测速的资料网上一抓一大把,却发现真的拿过来用还是有问题的,比如刚刚做了个东西,是个个头比较大的麦克纳姆轮 ...

  9. 电脑如何测网速_测网速小常识

    在我们日常使用的一些测速软件时,里面的功能和名词可大家都知道是什么意思吗?不知道的可以看这里,下面我为大家科普一下吧,如下图: 图片来源于精准测速APP 上传:即上传速度,是指将手机或电脑里面的内容传 ...

最新文章

  1. 深入理解Linux高性能网络架构的那些事!
  2. VxWorks下Shell调试总结
  3. 文档上传到服务器上,将文件上传到服务器上
  4. 【中台实践】华为大数据中台架构分享.pdf
  5. 端到端测试哪家强?不容错过的Cypress
  6. IE下table的innerHTML无效的处理方法
  7. 【CSP201312-2】ISBN号码,字符串,简单模拟
  8. c语言 数组指针函数,C语言:数组 指针 函数
  9. Mysql安装 | 跟着黑马程序员视频安装Mysql,少走随机密码错误的弯路【有手就行系列】
  10. 计算机四级c语言题库及答案,计算机四级考试题库及答案
  11. 【“计算机科学与技术”专业小白成长系列】Peter Norvig:十年学会编程
  12. 自我提升第n天,自媒体必备工具大全
  13. linux企业版as,Redhat 企业版 LINUX AS5.0 下载地址
  14. win10系统架设魔兽服务器,win10系统局域网魔兽争霸无法联机的步骤
  15. 场效应管的分类及型号命名方法
  16. 杀戮空间2服务器协议,杀戮空间2 云服务器搭建
  17. 百度贴吧五年内流失九成用户;罗永浩吐槽苹果新品:更丑更贵更胡来;进互联网大厂毕业生5年后7成人离开 | EA周报...
  18. 美国股票市场上市规则摘要纽约证券交易所
  19. Python PEP8编码规范(中文版)
  20. 渣基础:比照Hawstein学Cracking the coding interview(4)

热门文章

  1. vue3 父子组件通信
  2. python中isnumeric函数怎么用_Python中isnumeric()方法的使用简介
  3. 23种设计模式-观察者模式《关二爷成名后的生活》
  4. 达州学计算机好的学校有哪些,达州市计算机专业职业学校有哪些
  5. hmailserver php 收邮件,hMailServer 接收外部邮件并分发到内部邮箱
  6. 人生的路,每一步都算数
  7. 使用反向代理解决跨域问题
  8. 关于人脸检测方法的比较
  9. chatgpt与其他行业的结合
  10. mysql prepare原理,mysql Prepared Statements 原理介绍与优点 | 学步园