2023年7月11日发(作者:)
ab压测⼯具使⽤教程简介做测试或者服务端开发的同学经常想要知道我们的后台服务能同时承载多少⽤户量,通过模拟实际应⽤的软硬件环境及⽤户使⽤过程的系统负荷,长时间或超⼤负荷地运⾏测试软件,来测试被测系统的性能、可靠性、稳定性等。压⼒测试需要确定⼀个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最⼤的服务级别。通俗地讲,压⼒测试是为了发现在什么条件下您的应⽤程序的性能会变得不可接受。这是就需要⽤到⼀些压测⼯具来对服务器进⾏并发压⼒测试。常见的压⼒测试⼯具有Jmeter,LoadRunner,ab等等,⼀般来说做压⼒测试,建议使⽤Jmeter或者LoadRunner,但是简单场景的压测使⽤ab就很⽅便快捷,还可以在linux服务器上进⾏,可以与其他压测⼯具做下对⽐。本⽂将介绍如何使⽤ab对服务器进⾏压⼒测试,内容有ab⼯具的安装压测命令的⽤法压测简单⽰例压测结果分析原⽂:1、ab⼯具的安装介绍ab是apachebench命令的缩写,ab命令会创建多个并发访问线程,模拟多个访问者同时对某⼀HTTP URL地址进⾏访问。ab命令对发出负载的计算机要求很低,它既不会占⽤很⾼CPU,也不会占⽤很多内存。但却会给⽬标服务器造成巨⼤的负载,其原理类似CC攻击。⾃⼰测试使⽤也需要注意,否则⼀次上太多的负载。可能造成⽬标服务器资源耗完,严重时甚⾄导致死机。安装 yum -y install httpd-tools查看版本 ab -V2、压测命令的⽤法参数解析:-n 测试会话中所执⾏的请求个数,默认仅执⾏⼀个请求,如果不指定-t参数,默认执⾏完所有请求后⾃动结束压测-c ⼀次产⽣的请求个数,即同⼀时间发出多少个请求,默认为⼀次⼀个,此参数可以控制对服务器的单位时间内的并发量-t 测试所进⾏的最⼤秒数,默认为⽆时间限制....其内部隐含值是[-n 50000],它可以使对服务器的测试限制在⼀个固定的总时间以内,如果时间到了,请求个数还未执⾏完,也会被停⽌。-p 包含了需要POST的数据的⽂件,数据格式以接⼝请求参数定义的格式为准,eg. #json 内容⽰例: {"name":"⼩明","sex":"男"}-T POST 数据所使⽤的Content-type头信息,指定请求参数格式,eg. application/json-r 在接⼝返回失败后,默认会终⽌压测,添加此参数后压测会继续进⾏-v 设置显⽰信息的详细程度-w 以HTML表格的形式输出结果,默认是⽩⾊背景的两列宽度的⼀张表-i 以HTML表格的形式输出结果,默认是⽩⾊背景的两列宽度的⼀张表-x 设置属性的字符串,此属性被填⼊[/table]-y 设置属性的字符串-z 设置[table]属性的字符串-C 对请求附加⼀个Cookie⾏,其典型形式是name=value的参数对,此参数可以重复-H 对请求附加额外的头信息,此参数的典型形式是⼀个有效的头信息⾏,其中包含了以冒号分隔的字段和值的对(如"Accept-Encoding:zip/zop;8bit")-A HTTP验证,⽤冒号:分隔传递⽤户名及密码-P ⽆论服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送-X 对请求使⽤代理服务器-V 显⽰版本号并退出-k 启⽤HTTP KeepAlive(长连接)功能,即在⼀个HTTP会话中执⾏多个请求,默认为不启⽤KeepAlive功能-d 不显⽰"percentage served within XX [ms] table"的消息(为以前的版本提供⽀持)-S 不显⽰中值和标准背离值,且均值和中值为标准背离值的1到2倍时,也不显⽰警告或出错信息,默认会显⽰最⼩值/均值/最⼤值等(为以前的版本提供⽀持)-g 把所有测试结果写⼊⼀个'gnuplot'或者TSV(以Tab分隔的)⽂件-e 产⽣⼀个以逗号分隔的(CSV)⽂件,其中包含了处理每个相应百分⽐的请求所需要(从1%到100%)的相应百分⽐的(以微秒为单位)时间-h 显⽰使⽤⽅法-k 发送keep-alive指令到服务器端⼀般⽤法对某接⼝进⾏压⼒测试:ab -n 1000000 -c 200 -r "localhost:8080/helloworld?name=⼩明"
以每秒200个请求的速度对此接⼝进⾏访问,知道请求数达到1000000个为⽌,忽略接⼝返回的错误信息3、压测简单⽰例对get请求进⾏压测(⼀些页⾯和图⽚资源的访问也可以⽤这种⽅式)#请求接⼝ab -n 1000000 -c 200 -r "localhost:8080/helloworld?name=⼩明"
#获取图⽚ab -n 1000000 -c 200 -r "localhost:8080/static/"
#获取页⾯ab -n 1000000 -c 200 -r "localhost:8080/"
对post请求进⾏压测#压测命令ab -n 1000000 -c 1000 -r -p -T 'application/json' "localhost:8080/public/regist"#编辑请求数据# vi {"account":"128983321","nickname":"⼩明","sex":"男","age":22,"password":"DFKJDFJDLSDKSKL&%DFSD"}注意:如果想在请求失败后结束压测,可以去掉-r参数4、压测结果分析压测命令ab -n 10000 -c 1000 -r "127.0.0.1:8080/helloworld?name=⼩明"压测结果This is ApacheBench, Version 2.3 <$Revision: 1430300 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, /Licensed to The Apache Software Foundation, /Benchmarking 172.25.0.248 (be patient)Completed 1000 requestsCompleted 2000 requestsCompleted 3000 requestsCompleted 4000 requestsCompleted 5000 requestsCompleted 6000 requestsCompleted 7000 requestsCompleted 8000 requestsCompleted 9000 requestsCompleted 10000 requestsFinished 10000 requestsServer Software:
Server Hostname: 127.0.0.1 #请求的URL主机名Server Hostname: 127.0.0.1 #请求的URL主机名Server Port: 8080 #请求端⼝Document Path: /helloworld?name=⼩明 #请求路径Document Length: 29 bytes #HTTP响应数据的正⽂长度Concurrency Level: 1000 #并发⽤户数,这是我们设置的参数之⼀(-c)Time taken for tests: 129.957 seconds #所有这些请求被处理完成所花费的总时间 单位秒Complete requests: 10000 #总请求数量,这是我们设置的参数之⼀(-n)Failed requests: 0 #表⽰失败的请求数量Write errors: 0 #所有请求的响应数据长度总和。包括每个HTTP响应数据的头信息和正⽂数据的长度Total transferred: 1500000 bytes #所有请求的响应数据中正⽂数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度HTML transferred: 290000 bytes #吞吐量,计算公式:Complete requests/Time taken for tests 总请求数/处理完成这些请求数所花费的时间Requests per second: 76.95 [#/sec] (mean) #⽤户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发⽤户数)Time per request: 12995.680 [ms] (mean) #⽤户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发⽤户数)Time per request: 12.996 [ms] (mean, across all concurrent requests) #服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency LevelTransfer rate: 11.27 [Kbytes/sec] received #表⽰这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能⼒达到极限时,其出⼝宽带的需求量。Connection Times (ms) min mean[+/-sd] median maxConnect: 0 24 150.7 0 1003Processing: 73 12348 2207.1 12966 13916Waiting: 53 12348 2207.1 12966 13916Total: 73 12373 2199.0 12968 14023Percentage of the requests served within a certain time (ms) 50% 12968 #50%的请求在13秒内返回 66% 13005
75% 13031 80% 13049 90% 13109 95% 13173 98% 13260 99% 13350 #99%的请求在13.4秒内返回 100% 14023 (longest request)
发布者:admin,转转请注明出处:http://www.yc00.com/web/1689030112a197541.html
评论列表(0条)