常用的HTTP服务压测工具

这篇具有很好参考价值的文章主要介绍了常用的HTTP服务压测工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、压测介绍

1、简介

在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug,同时了解了程序的实际处理能力能够帮我们更好的匹配项目的实际需求,节约资源成本。

2、压测相关术语

  • 响应时间(RT) :指系统对请求作出响应的时间.

  • 吞吐量(Throughput) :指系统在单位时间内处理请求的数量

  • QPS每秒查询率(Query Per Second) :“每秒查询率”,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

  • TPS(TransactionPerSecond):每秒钟系统能够处理的交易或事务的数量

  • 并发连接数:某个时刻服务器所接受的请求总数

3、压测常用工具

  • ab

  • wrk

  • jmeter

二、压测工具介绍

1、ab压测

1.1 介绍

ab全称Apache Bench是Apache自带的性能测试工具。使用这个工具,只须指定同时连接数、请求数以及URL,即可测试网站或网站程序的性能
ab压测官方文档:https://httpd.apache.org/docs/2.4/programs/ab.html

通过ab发送请求模拟多个访问者同时对某一URL地址进行访问,可以得到每秒传送字节数、每秒处理请求数、每请求处理时间等统计数据。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。

1.2 ab压测使用

ab [options] [http://]hostname[:port]/path

# 常用参数如下
-n requests 总请求数
-c concurrency 一次产生的请求数,可以理解为并发数
-t timelimit 测试所进行的最大秒数, 可以当做请求的超时时间
-p postfile 包含了需要POST的数据的文件
-T content-type POST数据所使用的Content-type头信息

举例

# 测试某个GET请求接口
ab -n 10000 -c 100 -t 10 "http://127.0.0.1:8080/api/v1/posts?size=10"
# 测试POST请求接口
ab -n 10000 -c 100 -t 10 -p post.json -T "application/json" "http://127.0.0.1:8080/api/v1/post"

2、wrk压测

2.1 介绍

wrk 是一款针对 Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负载。
github地址:https://github.com/wg/wrk

优势:

  • 轻量级性能测试工具

  • 安装简单

  • 学习曲线基本为0,几分钟就学会使用了

  • 基于系统自带的高性能I/O机制,如epoll,kqueue,利用异步的事件驱动框架,通过很少的线程就可以压出很大的并发量,例如几万、几十万,这是很多性能测试工具无法做到的。

劣势:

  • wrk 目前仅支持单机压测,后续也不太可能支持多机器对目标机压测,因为它本身的定位,并不是用来取代 JMeter, LoadRunner 等专业的测试工具。

2.2 安装

这里我通过源码进行安装

# 安装必要的依赖,已经安装了可以忽略
sudo apt install build-essential libssl-dev git unzip
# 从 github 拉取源代码
git clone https://github.com/wg/wrk.git
# 编译
cd wrk
# 可以使用多线程编译来加快速度,make -j8, 8 表示 8个线程一起编译
make
# 把生成的wrk移到一个PATH目录下面
sudo cp wrk /usr/local/bin


2.3 wrk压测简单使用

使用方法: wrk <选项> <被测HTTP服务的URL>                           
 
  Options:                                           
    -c, --connections <N>  跟服务器建立并保持的TCP连接数量 
    -d, --duration    <T>  压测时间          
    -t, --threads     <N>  使用多少个线程进行压测,压测时,是有一个主线程来控制我们设置的n个子线程间调度  
                                                    
    -s, --script      <S>  指定Lua脚本路径      
    -H, --header      <H>  为每一个HTTP请求添加HTTP头     
        --latency          在压测结束后,打印延迟统计信息  
        --timeout     <T>  超时时间    
    -v, --version          打印正在使用的wrk的详细版本信                                              
 
  <N>代表数字参数,支持国际单位 (1k, 1M, 1G)
  <T>代表时间参数,支持时间单位 (2s, 2m, 2h)

举例,当然wrk工具嵌入了lua脚本语言,因此,在自定义压测场景时,可在wrk目录下使用lua定制压测场景

wrk -t8 -c100 -d30s --latency http://127.0.0.1:8080/api/v1/posts?size=10
# 使用8个线程200个连接,对bing首页进行了30秒的压测,并要求在压测结果中输出响应延迟信息
wrk -t8 -c200 -d30s --latency  http://www.bing.com

2.4 go-wrk介绍

go-wrk是Go语言版本的wrk,Windows同学可以使用它来测试,使用如下命令来安装go-wrk

go get github.com/adeven/go-wrk

使用方法同wrk类似,基本格式如下:

go-wrk [flags] url

常用的参数:

-H="User-Agent: go-wrk 0.1 bechmark\nContent-Type: text/html;":'\n'分隔的请求头
-c=100: 使用的最大连接数
-k=true: 是否禁用keep-alives
-i=false: if TLS security checks are disabled
-m="GET": HTTP请求方法
-n=1000: 请求总数
-t=1: 使用的线程数
-b="" HTTP请求体
-s="" 如果指定,它将计算响应中包含搜索到的字符串s的频率

执行测试文章来源地址https://www.toymoban.com/news/detail-599636.html

go-wrk -t=8 -c=100 -n=10000 "http://127.0.0.1:8080/api/v1/posts?size=10"

到了这里,关于常用的HTTP服务压测工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 性能测试工具 Jmeter 做 Http 接口测试 :编写自定义函数

    目录 一、 前言 二、 编写自定义函数的步骤 1. 新建一个工程,导入 jmeter jar 包。 2. 新建 package:stressTest.functions 3. 新建一个类继承 AbstractFunction,重写以下方法: 4. 打包 5. 将打出来的 jar 包拷贝至 jmeter 的目录: 6. 运行

    2024年02月15日
    浏览(50)
  • 测试进阶必备,这5款http接口自动化测试工具真的很香

    现在市场上能做接口自动化测试的工具有很多,一搜一大把,让人眼花缭乱。我们去选择对应实现方式时,不管是框架体系还是成熟稳定的工具,核心目的都是期望引入的技术能在 最低投入 的情况下达到 最优效果 。 那么我们选择依据出来了: 一是最低投入。 二是最优效果

    2024年02月06日
    浏览(44)
  • 测试进阶必备,这5款http接口自动化测试工具不要太香~

    现在市场上能做接口自动化测试的工具有很多,一搜一大把,让人眼花缭乱。我们去选择对应实现方式时,不管是框架体系还是成熟稳定的工具,核心目的都是期望引入的技术能在最低投入的情况下达到最优效果。 那么我们选择依据出来了: 一是最低投入。 二是最优效果。

    2024年03月26日
    浏览(61)
  • 探究HTTP API接口测试:工具、方法与自动化

    本文将深入探讨HTTP API接口测试的重要性,并介绍了相关工具、方法以及自动化测试的实施,同时比较了HTTP和API接口测试的区别。从不同角度解析这一关键测试领域,帮助读者更好地理解和应用于实际项目中。 在如今数字化的世界中,软件开发和应用越来越离不开HTTP API接口

    2024年02月11日
    浏览(48)
  • 强!10.6K star,一款开源HTTP测试工具,适合新手,简单、容易上手!

    大家好,我是狂师! 今天给大家推荐一款开源的HTTP测试工具: Hurl ,相比 curl 、 wget 功能更强大,且更容易上手、很适用新手使用。 Hurl 是一个使用 Rust 语言开发的命令行工具,它允许用户运行以简单纯文本格式定义的HTTP请求。这个工具不仅适用于获取数据,还非常适合用

    2024年04月28日
    浏览(46)
  • 性能测试工具locust压测介绍

    官方文档:https://docs.locust.io/en/stable/index.html 1、初识locust         Locust 完全基于Python 编程语言,采用python 编写压测脚本,且所有请求完全基于requests库。除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用Python调用对应的库进行请求描述即可。locust是一个

    2024年02月07日
    浏览(71)
  • Nginx代理服务器、HTTP调度、TCP/UDP调度、Nginx优化、HTTP错误代码、状态页面、压力测试

    Top 案例1:Nginx反向代理 案例2:Nginx的TCP/UDP调度器 案例3:Nginx常见问题处理 1.1 问题 使用Nginx实现Web反向代理功能,实现如下功能: 后端Web服务器两台,可以使用httpd实现 Nginx采用轮询的方式调用后端Web服务器 两台Web服务器的权重要求设置为不同的值 最大失败次数为2,失败

    2024年01月21日
    浏览(47)
  • 什么是软件压力测试?软件压力测试工具和流程有哪些?

    软件压力测试 一、含义: 软件压力测试是一种测试应用程序性能的方法,通过模拟大量用户并发访问,测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题,如内存泄漏、线程锁、资源泄漏等,以及在高峰期或高负载情况下系统的响应

    2024年02月11日
    浏览(58)
  • 压力测试+接口测试(工具jmeter)

    jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因 为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在 linux

    2024年01月17日
    浏览(56)
  • 开发工具-压力测试工具 ab

    在学习ab工具之前,我们需了解几个关于压力测试的概念 吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。 计算公式:

    2024年02月04日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包