| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 很好用的压测工具 - Apache Bench工具 -> 正文阅读 |
|
[开发测试]很好用的压测工具 - Apache Bench工具 |
简介今年公司开发者大会是线上的形式,按照惯例,为了服务的保障,需要对整个系统的性能做一个评估,临时抱佛脚,比较常用的工具有jmeter和Apache Bench,最终在两者之间选择了Apache Bench(简称ab),也就针对ab工具做了一些总结。 AB简介打开官网可以看到下面一段话:
ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab。ab又是一个行工具,对发起负载的本机要求很低,根据ab 可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。 jmeter和ab的比较这个网上有很多的介绍,收集找了一位大神的总结(具体的不多说,大家可以自行百度) 1、jmeter是一次完整的请求和返回, 而AB只是发出去请求,并不对返回做处理,只是请求发送成功或者失败。 所以从准确性来说,Jmeter更准确,而AB速度更快,可以用最少的机器资源产生更多的访问请求; 2、Jmeter本身支持断言、可变参数和CSV数据集的输入,能设定更加灵活多变的的测试场景,而AB则不支持(暂时没想到); 3、Jmeter可以提供更加详细的统计结果数据,比如接口错误信息、单线程的请求时间等,而AB则不支持; 4、Jmeter不支持精确时间的压测,比如压测10分钟,但是AB支持; 5、Jmeter支持分布式的压测集群,且支持函数,AB不支持; 6、软件自身耗费资源:Jmeter由于比较重,且统计了很多结果数据,比AB耗时耗费资源多,AB属于超轻量级,在开发测试过程中十分适合做单接口压测。 因为本次只针对单个接口做测试,手上刚好有空闲的linux机器,综合考虑就选择了AB,废话不多说,下面就进行AB的使用做一些讲解。 AB的使用官网针对ab的使用做了很详细的介绍,我们可以去查看官网地址: https://httpd.apache.org/docs/2.4/programs/ab.html 下面做了一些节抄,英文比较简单,就不做翻译了。 ab参数
参数说明
参数说明Server Software The value, if any, returned in the server HTTP header of the first successful response. This includes all characters in the header from beginning to the point a character with decimal value of 32 (most notably: a space or CR/LF) is detected. Server Hostname The DNS or IP address given on the command line Server Port The port to which ab is connecting. If no port is given on the command line, this will default to 80 for http and 443 for https. SSL/TLS Protocol The protocol parameters negotiated between the client and server. This will only be printed if SSL is used. Document Path The request URI parsed from the command line string. Document Length This is the size in bytes of the first successfully returned document. If the document length changes during testing, the response is considered an error. Concurrency Level The number of concurrent clients used during the test Time taken for tests This is the time taken from the moment the first socket connection is created to the moment the last response is received Complete requests The number of successful responses received Failed requests The number of requests that were considered a failure. If the number is greater than zero, another line will be printed showing the number of requests that failed due to connecting, reading, incorrect content length, or exceptions. Write errors The number of errors that failed during write (broken pipe). Non-2xx responses The number of responses that were not in the 200 series of response codes. If all responses were 200, this field is not printed. Keep-Alive requests The number of connections that resulted in Keep-Alive requests Total body sent If configured to send data as part of the test, this is the total number of bytes sent during the tests. This field is omitted if the test did not include a body to send. Total transferred The total number of bytes received from the server. This number is essentially the number of bytes sent over the wire. HTML transferred The total number of document bytes received from the server. This number excludes bytes received in HTTP headers Requests per second This is the number of requests per second. This value is the result of dividing the number of requests by the total time taken Time per request The average time spent per request. The first value is calculated with the formula concurrency * timetaken * 1000 / done while the second value is calculated with the formula timetaken * 1000 / done Transfer rate The rate of transfer as calculated by the formula totalread / 1024 / timetaken 举例从上面可以看到ab支持的参数很多,但其实我们一般来说只有-n(发送的请求总数)和 -c(请求的并发线程数)的参数是必要的。 从图上的列子我们可以看出,本次是启动了200个线程并发,总共跑了2000次(为了避免泄露信息安全,对接口做了隐私处理)。 结果我们观察到 Requests for second为722.77,即每秒钟处理722.77个请求; Time per request为276.714,即请求的平均耗时为276.714ms; 另外还可以 99线,98线,95线等的耗时指标; 特别要注意,NON-2xx responses 为2000,而请求总共2000,则表示2000个请求返回的全部都是非2000,需要考虑请求返回是否都是错误的; |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 5:31:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |