在项目正式上线之前,通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug。

目录

  • 压测相关术语
  • 压测工具
    • ab
      • 命令格式
      • 使用
    • wrk
      • 命令参数
      • 使用
    • go-wrk
      • 安装
      • 使用

压测相关术语

  1. 响应时间(RT) :指系统对请求作出响应的时间.
  2. 吞吐量(Throughput) :指系统在单位时间内处理请求的数量
  3. QPS每秒查询率(Query Per Second) :“每秒查询率”,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
  4. TPS(TransactionPerSecond):每秒钟系统能够处理的交易或事务的数量
  5. 并发连接数:某个时刻服务器所接受的请求总数

压测工具

ab

ab全称Apache Bench,是Apache自带的性能测试工具。使用这个工具,只须指定同时连接数、请求数以及URL,即可测试网站或网站程序的性能。

通过ab发送请求模拟多个访问者同时对某一URL地址进行访问,可以得到每秒传送字节数、每秒处理请求数、每请求处理时间等统计数据。

命令格式

ab [options] [http://]hostname[:port]/pathoptions:-n requests 总请求数-c concurrency 一次产生的请求数,可以理解为并发数-t timelimit 测试所进行的最大秒数, 可以当做请求的超时时间-p postfile 包含了需要POST的数据的文件-T content-type POST数据所使用的Content-type头信息

使用

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

wrk

wrk是一款开源的HTTP性能测试工具,它和上面提到的ab同属于HTTP性能测试工具,它比ab功能更加强大,可以通过编写lua脚本来支持更加复杂的测试场景。

命令参数

-c --conections:保持的连接数
-d --duration:压测持续时间(s)
-t --threads:使用的线程总数
-s --script:加载lua脚本
-H --header:在请求头部添加一些参数
--latency 打印详细的延迟统计信息
--timeout 请求的最大超时时间(s)

使用

使用示例:

wrk -t8 -c100 -d30s --latency http://127.0.0.1:8080/api/v1/posts?size=10

结果:

Running 30s test @ http://127.0.0.1:8080/api/v1/posts?size=108 threads and 100 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency    14.55ms    2.02ms  31.59ms   76.70%Req/Sec   828.16     85.69     0.97k    60.46%Latency Distribution50%   14.44ms75%   15.76ms90%   16.63ms99%   21.07ms198091 requests in 30.05s, 29.66MB read
Requests/sec:   6592.29
Transfer/sec:      0.99MB

go-wrk

go-wrk是Go语言版本的wrk。

安装

在新版本的 go 1.15 go install 如果本地没有 package 会自动从远程下载包,所以是十分方便的

go install github.com/adeven/go-wrk@latestgo get github.com/adeven/go-wrk

使用

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

go-wrk [flags] urlflags:-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的频率

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

简单常用的http压测工具相关推荐

  1. web版本 开源压测工具_开源了一个简单的http服务压测工具Alex,自带web ui,golang实现...

    Alex是基于vegeta library和boom封装的压力测试web UI.Vegeta提供稳定的qps压力源,boom提供稳定的并发数压力源. github地址 https://github.c ...

  2. 基准测试工具(压测工具):wrk---高并发、损耗低,安装简单 (一)

    基准测试工具:Wrk初识   最近和同事聊起常用的一些压测工具,谈到了Apache ab.阿里云的PTS.Jmeter.Locust以及wrk各自的一些优缺点和适用的场景类型. 这篇博客,简单介绍下H ...

  3. 从0到1构建美团压测工具

    背景 美团内部的RPC服务大多构建在Thrift之上,在日常开发服务的过程中,需要针对这些服务进行压力测试(以下简称压测)来发现潜在问题.常用的方法有: 使用一些脚本语言如:Python.Ruby等, ...

  4. Mark - HDFS性能压测工具

    引言 Hadoop生态圈的基石有两个,一个是HDFS文件系统,一个是MR编程框架.第一弹中提到应用MR编程框架实现大规模多机联合负载压测场景的方案,则突出了MR的能力,实际上HDFS作为这一切的基础, ...

  5. HDFS性能压测工具

    转载地址:http://www.taobaotest.com/blogs/2517 引言 Hadoop生态圈的基石有两个,一个是HDFS文件系统,一个是MR编程框架.第一弹中提到应用MR编程框架实现大 ...

  6. 几款常用压测工具介绍与使用

    现在市面上的压测工具数不胜数,挑几款常用的做个简单的介绍. 1.Apache ab ab是apache自带的压力测试工具,使用起来非常方便 . 安装 1. ab运行需要依赖apr-util包,安装命令 ...

  7. 实现一个简单的压测工具

    公司开发了一些服务器程序:上生产前需要进行压力测试,测试点包括:并发数.响应时间.吞吐量等指标.领导说,能不能仿照LoadRunner实现一个简单的压测工具(并发数在10000以上,结果指标以曲线图的 ...

  8. 常用的HTTP服务压测工具

    文章目录 一.压测介绍 1.简介 2.压测相关术语 3.压测常用工具 二.压测工具介绍 1.ab压测 1.1 介绍 1.2 ab压测使用 2.wrk压测 2.1 介绍 2.2 安装 2.3 wrk压测 ...

  9. 常用性能压测工具实战总结

    ### 一.压测背景 >以前:未出社会之前经常用AB工具来压测自己的 nginx 欢迎页面,看着服务器的资源从20%到100%,发现原来一个开源的工具都可以把一台4C8G的虚拟机压爆满,然后就陷 ...

最新文章

  1. 算法---给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合
  2. 二叉树的递归遍历和层序遍历(c/c++)
  3. 香港科技园公司“牵手”腾讯 共推香港金融科技发展
  4. 工业机器人电路图讲解话术_燃气传感器技术在防爆喷涂机器人中的应用
  5. 简单理解session
  6. Redhat GRUB配置错误修复
  7. MUI H5+ 开发app基础
  8. 李洪强iOS开发之- 实现简单的弹窗
  9. 第六十四期:聊聊原子变量、锁、内存屏障那点事
  10. 重大危机引发的公司经营战略问题回顾
  11. 一些可能有用的功能cocos2dx
  12. 如何解决服务器响应过慢的问题,服务器响应速度慢的处理方法
  13. Apple商务管理分发
  14. win7蓝屏0x000000f4修复_Win 7电脑突发蓝屏现象,应如何解决或避免
  15. 小米10青春版刷鸿蒙,功能齐全也不行!小米10青春版现已跌至新低价,高刷已成趋势?...
  16. win10 python3.6安装numpy路径报错_Python3.6的组件numpy的安装 猪悟能
  17. 用python爬取今日头条上的图片_Python爬虫:抓取今日头条图集
  18. load()方法异步请求数据
  19. vmware虚机安装vmtool
  20. Socket基本操作的C++封装--以及Socket通信实践

热门文章

  1. 如何开发一款游戏?【游戏开发所需技能和开发流程】
  2. echarts 地图 区域合并
  3. SA387Gr22Cl2美标容器板介绍,SA387Gr22Cl2钢板规格8-90mm厚
  4. 三-五功能/半亮/25%亮/全亮/爆闪/SOS_专用应急灯手电筒IC方案
  5. 中国第三代半导体行业运行现状及十四五规划研究分析报告2022-2028年版
  6. unity 如何获取系统时间
  7. 中国平安增持华夏幸福5.69%股权 看好长期战略协同
  8. Android网络开发技术实战详解
  9. Vivado 2019.1安装包下载
  10. Java工程师薪资究竟有多高?