long8.com

当前位置:龙8官网long8 > long8.com > web压测工具http_load原理分析long8.com:

web压测工具http_load原理分析long8.com:

来源:http://www.sketchydesignstudio.com 作者:龙8官网long8 时间:2019-12-13 02:18

一、前言

http_load是大器晚成款测量试验web服务器品质的开源工具,从上面的网站能够下载到新型版本的http_load:

(页面实在太简陋……)

非常令人安慰的是,这么些软件直接在保证着改正(不像webbench,已然是十年的古玩了。webbench的源码深入分析请参照他事他说加以考查: ),并且更新频率还蛮高的道理当然是那样的。小编在下载了二〇一五年3月2号的本子后,紧接着2月14号再查看,就又有了三个新的版本。这篇随笔深入分析的http load版本是“http_load 02aug2016”,还好各种版本之间差异非常小,本文依然具有较好的通用性的。

 

二、使用办法

下载并解压缩之后,步向工具的根目录直接make,就可以得到可举行的工具。其接受方法如下图所示:

long8.com 1

图中所示的url.txt内容是多少url链接,每行三个,例如:http://127.0.0.1:80/index.html。

详细说圣元(Synutra卡塔尔国(Aptamil卡塔尔(英语:State of Qatar)下应用格式:

./http_load [-checksum] [-throttle] [-proxy host:port] [-verbose] [timeout secs] [-sip sip_file]

         -parallel N | -rate N [-jitter]

         -fetches N | -seconds N

         url_file

筛选与参数:

-fetches:总结要会见url的次数,无论成功战败都记为三回,达到数量后前后相继退出。

-rate:每秒访谈的次数(即访问频率),调整品质测量检验的速度。

-seconds:工具运转的时光,达到seconds设置的年华后先后退出。

-parallel:最大现身访谈的数额,调控质量测量试验的进程。

-verbose:使用该选项后,每60秒会在荧屏上打字与印刷三遍当前测量检验的速度新闻。

-jitter:该选项必得与-rate同期利用,表示其实的访谈频率会在rate设置的值上下随机波动拾壹分生机勃勃的宽窄。

-checksum:由于要拜见有个别url很频仍,为了确定保障每便访问时吸收的服务器回包内容都如出一辙,能够动用checksum检查,不平等会在显示器上输出错误消息。

-cipher:使用SSL层的时候会用到此参数(url是https初叶),使用一定的密码集。

-timeout:设置超时时间,以秒为单位,默以为60秒。每超越叁遍则记为三遍超时的连续几日

-proxy:设置web代理,格式为-proxy host:port

-throttle:限流情势,限定每秒收到的数据量,单位bytes/sec。该情势下私下认可节制为3360bytes/sec。

-sip:钦命二个source ip文件,该公文每意气风发行都以ip+port的款式。

急需专门表达的是,-parallel参数和-rate参数中必得有叁个,用于钦点发诉求包的形式;-fetches和-seconds多少个参数必需有一个,用于内定程序的终止条件。

 

三、与webbench的对比

webbench是别的风度翩翩款网页品质测量检验工具,它的源码深入分析能够参照如下连接:

webbench选拔多进度发包,最多扶持3万并发量,而http_load选择单少年老成进程并行复用情势发包。由于唯有三个历程,http_load对于机器能源消耗超级小,品质必要不高,但它的劣点就是最大并发量比webbench要少多数,只可以达到千的量级。在不胜枚举光景中,几千的量级也早已应付裕如了,由此实际工具的选取还要看其实际意况形。

大家独家接受webbench和http_load对同二个U途锐L进行压力访谈,结果如下。

[horstxu@vps ~/webbench-1.5]$ ./webbench -t 30 -c 1000 http://127.0.0.1:8080/user.png

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1:8080/user.png

1000 clients, running 30 sec.

Speed=180340 pages/min, 5268934 bytes/sec.

Requests: 90170 susceed, 0 failed.


[horstxu@vps ~/http_load-02aug2014]$ ./http_load -parallel 1000 -fetches 90000 url.txt    

90000 fetches, 830 max parallel, 1.2933e+08 bytes, in 30.5439 seconds

1437 mean bytes/connection

2946.58 fetches/sec, 4.23424e+06 bytes/sec

msecs/connect: 0.772754 mean, 215 max, 0.025 min

msecs/first-response: 17.2259 mean, 288.007 max, 1.735 min

HTTP response codes:

  code 200 – 90000

假定张开一下折算,webbench测得的页面RPS为180340 pages/min = 3006rps,那与http_load的测量检验结果2946fetches/sec结果是很左近的,並且,http_load计算数据特别周密,数据校验也更为完善。对于每秒流量数据,webbench的结果是5268934bytes/sec,http_load是4234240bytes/sec。那在这之中的差距在于,http_load在总结时剔除了http报文的头顶(head),而webbench是从未有过删除底部的。接下来大家来精通一下http_load的实现原理。

 

四、工作流程

程序的做事流程能够用上面这幅图来表示,实施时前后相继主要环节放在流程图中的循环内。http_load为单纯进度的程序,由此进度内的有着调用都以非窒碍形式开展, 保险程序的流畅度。程序的奉行进度主体在二个巡回个中,不间断实行达成条件的剖断和过期剖断。时间管理办法是应用拉链式哈希表,超时景况下即运转超时管理函数。

long8.com 2

 

五、原明白析

5.1 程序实行进度深入分析

假诺应用简化的代码来汇报上生龙活虎节所述的流程图,能够参考下图。流程图中的循环也正是主函数中的for循环。在主循环内重要做4件业务。首先,检查测试当前先后是还是不是满足终止条件,借使满足,则调用停止函数退出程序,不然举行下一步。然后,采纳select监听描述符状态,生机勃勃旦现身可读或可写状态的描述符,则使用handle_connect与handle_read两函数分别开展管理。须要提示的是,源程序在拍卖读取socket缓冲区那大器晚成段为了周详剔除掉http央浼报文的底部,花销了大气的代码。再然后,循环尾巴部分实行超时检验,检查当前光阴有未有逾越在哈希表中登记的每贰个岁月戳,倘若高出,则要实施其对应的超时管理函数。具体的小运戳管理方法见下文。源码中国共产党有5种时光戳必要注册,分别对应着5个超时管理函数,请参谋图中的超时管理函数会集。

long8.com 3

5.2 三个基本点的布局体

下图中详细描述了四个源码中最为重大的结构体。首先,程序接受全局变量connections数组调控每三个TCP连接,connections数组中各种成分都以二个针对connection布局体的指针。connection构造体包括了用于记录测量试验数据的变量,连接意况的调整变量,以致最伊始从文件中读取的连年配置消息。第贰个构造体为url布局体,在http_load个中,想要央浼的url存款和储蓄在文书内,能够抢先八个。这几个UTiguanL的新闻会被读取至由指向url构造体的指针组成的urls数组。央浼会随机发向这几个数组。比较webbench,http_load的一个优势是它的数据校验环节。每二个url会配有再次来到要求的checksum值,用于校验每趟央求同一个url重回的原委是或不是相似。第多少个构造体是时间管理办法中结成拉链式哈希表的每七个节点。它包涵了指向超时处理函数的指针,以致记录超时时间的变量。

long8.com 4

5.3 时间戳处理办法

http_load中可是抢眼的就是它的日子管理措施。在该工具中,有为数不菲亟待定期触发的地点,比如每隔生机勃勃段时间输出大器晚成份测验进程陈诉;链接超越一定时期未响应则记为超时,输出超时错误音讯;设定发送频率,每间距豆蔻梢头段时间发出一个伸手等等。那么些时间戳和其逾期触发的函数以Timer构造体的样式,全部挂号于拉链法构成的哈希表中。每一种链表都是以时日戳顺序一天到晚依次排列。那样,在每贰个for循环施行超时检验的有些,大家得以很有益地认清出脚下日子是还是不是业已超越了岁月戳的光阴,倘诺超越,则进行超时处理函数。同期,那样的数据构造也压实了插入新时间戳的频率。

long8.com 5

 

六、结语

http_load与webbench都是很常用的压测工具,要是协作使用,结果做比较,既是对测得结果的校验,也能帮助纯熟两种工具的好坏。http_load的兼顾思路也足以运用到事情测验工具中来,支持开荒出更便捷的压测工具。

本文由龙8官网long8发布于long8.com,转载请注明出处:web压测工具http_load原理分析long8.com:

关键词: