ab是apachebench命令的缩写,ab是apache自带的压力测试工具。ab非常实用,不仅可以对apache服务器进行网站访问压力测试,还可以对其他类型的服务器进行压力测试。如nginx、tomcat、IIS等。ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时访问某个URL地址。它的测试对象是基于URL的,因此不仅可以用来测试apache的负载压力,还可以用来测试nginx、lighthttp、tomcat、IIS等其他web服务器的压力。ab命令对发出负载的计算机要求很低,既不占用大量CPU,也不占用大量内存。但会对目标服务器造成巨大的负载,其原理与CC攻击类似。还需要注意自己测试使用,不然一次负载太大。可能导致目标服务器资源耗尽,严重时甚至会导致崩溃。安装ab命令>yum-yinstallhttpd-tools命令格式ab[options][http[s]://]hostname[:port]/path命令参数options-Aauth-username:password为服务器提供BASIC认证信任.用户名和密码以:分隔,并以base64编码形式发送。无论服务器是否需要,都会发送此字符串(即是否发送401需要身份验证代码)。-cconcurrency一次产生的请求数。默认是一次一个。-Ccookie-name=value将Cookie:行附加到请求中。它的典型形式是name=value的参数对。该参数可以重复。-d显示“在XX[ms]表中提供的百分比”消息(支持以前的版本)。-ecsv-file生成一个逗号分隔(CSV)文件,其中包含处理每个相应百分比的请求(从1%到100%)所需的相应时间百分比(以微秒为单位)。由于此格式是“二进制化”的,因此它比“gnuplot”格式更有用。-ggnuplot-file将所有测试结果写入“gnuplot”或TSV(制表符分隔)文件。这个文件可以很容易地导入到Gnuplot、IDL、Mathematica、Igor甚至Excel中。它们的第一行是标题。-h显示用法。-Hcustom-header向请求附加额外的标头。此参数的典型形式是包含以冒号分隔的字段和值对的有效标题行(例如,“Accept-Encoding:zip/zop;8bit”)。-i执行HEAD请求而不是GET。-k启用HTTPKeepAlive功能,即在一个HTTP会话中执行多个请求。KeepAlive功能默认未开启。-nrequests在测试会话中执行的请求数。默认情况下,只执行一次请求,但通常结果不具有代表性。-pPOST-file包含要POST的数据的文件。-Pproxy-auth-username:password向代理提供BASIC身份验证信任。用户名和密码以:分隔,并以base64编码形式发送。无论服务器是否需要,都会发送此字符串(即是否发送401需要身份验证代码)。-q如果处理的请求数大于150,ab将在每次处理大约10%或100个请求时在stderr上输出一个进度计数。-q标志禁止显示这些消息。-s在编译时使用(ab-h会显示相关信息)当使用SSL保护的https而不是http协议时。此功能是实验性的和粗糙的。最好不要使用它。-S不显示中值和标准差值,当均值和中值是标准差值的1到2倍时不显示警告或错误信息。默认情况下,显示最小值/平均值/最大值等值。(提供对以前版本的支持)。-ttimelimit进行测试的最大秒数。它的内部隐含值为-n50000。它可以将服务器的测试限制在一个固定的总时间。默认情况下,没有时间限制。-Tcontent-typeContent-typePOST数据使用的头信息。-vverbosity设置显示消息的详细程度-4或更多将显示标题,3或更多将显示响应代码(404、200等),2或更多将显示警告和其他消息。-V显示版本号并退出。-w将结果输出为HTML表格。默认情况下,它是一个两列宽、白色背景的表格。-x
-attributes设置 | 属性的字符串。对json.im进行1000个请求,10个并发用户的压力测试>ab-n1000-c10https://json.im-n1000表示请求总数为1000-c10表示并发用户数是10ab压力测试返回详细消息内容ServerSoftware:Apache#ServerSoftwareServerHostname:json.im#DomainnameServerPort:80#RequestportnumberDocumentPath:/#FilepathDocumentLength:40888bytes#PagebytesConcurrencyLevel:10#RequestedconcurrencyTimetakenfortests:27.300seconds#TotalaccesstimeCompleterequests:1000#NumberofsuccessfulrequestsFailedrequests:0#NumberoffailedrequestsWriteerrors:0Totaltransferred:41054242bytes#请求总数据大小(包括header)header信息)HTMLtransferred:40888000bytes#HTML页面实际总字节数Requestspersecond:36.63[#/sec](mean)#每秒请求多少次,这是一个很重要的参数值,服务器的吞吐量Timeperrequest:272.998[ms](mean)#UseraveragerequestwaitingtimeTimeperrequest:27.300[ms](mean,acrossallconcurrentrequests)#服务器平均处理时间,是服务器吞吐量的倒数Transferrate:1468.58[Kbytes/sec]received#每秒获取的数据长度ConnectionTimes(ms)minmean[+/-sd]medianmaxConnect:43472.44753Processing:18922440.7215895Waiting:10212838.6118794Total:23327041.3263945一定时间内服务的请求的百分比(ms)50%263#50%ms6返回66%以内的1#50%ms用户请求在271毫秒内返回75%279#75%的用户请求在279毫秒内返回80%285#80%的用户请求在285毫秒内返回90%303#90%的用户请求在303毫秒内返回95%320#95%的用户请求在320毫秒内返回98%341#98%ofuserrequestsreturn99%within341ms373#99%ofuserrequestsreturn100%within373ms945(longestrequest)loginproblem针对实际场景中经常需要的登录问题,如果接口要验证Cookie,使用-C写入Cookie内容>ab-n100-Ckey=valuehttps://json.im或者用-H配合Cookie自定义多个字段>ab-n100-H"Cookie:Key1=Value1;Key2=Value2"http://localhosttestinterfaceHeaderincomingtoken>ab-n1000-c10-H'token:abc'https://json.im原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门
最新推荐
猜你喜欢
|