ab的使用和行为分析

ab的全称是Apache Benchmark。用于测试HTTP服务器的性能。

ab命令会创建很多的并发访问连接,使用多线程模拟多个访问者同时对某一URL地址进行访问。支持http和https。代码是C语言书写的。

使用举例:

ab -c 20 -n 10000 -k http://172.16.1.100:10000/

选项说明:

-c表示并发连接数。需要注意如果请求很少,可能达不到指定的并发连接数。最大值为20000。要想测试更大的值,需要运行多个实例。

-n是请求总数。

-k表示使用HTTP持久连接。

-B 指定客户端地址。

-s指定等待应答的超时时间,默认是30秒。

功能:

测试吞吐量。使用-k有利于吞吐量。这是ab最适合的测试。

测试并发连接数。一定要使用-k。还要将-n的值设置的远远大于-c的值,因为所有事务都完成后连接就断开了。因为无法让ab发送请求的速度慢一些,每秒rps太大,消耗太多资源。所以其实ab并不太适合用来测试并发连接数。

测试每秒新建连接数。这个时候建议不使用-k。

场景分析:

服务器端是apache。

场景1、ab -n 1000 -c 2 -k http://172.16.1.27/。Apache使用默认配置。

一个连接处理了100个事务后,服务器发送FIN报文断开连接,客户端重新发起连接。apache MaxKeepAliveRequests的缺省值是100。

同时最多两条工作的连接,总共建立过10条TCP连接,客户端TCP端口从一个随机位置开始选取,17806、17808、17810、17812、17814、17816、17818、17820、17822、17824。

场景2、ab -n 1000 -c 2 -k http://172.16.1.27/。修改apache服务器配置为MaxKeepAliveRequests 100000。

总共只建立两个连接。直到测试完成了,由客户端主动发送fin报文,断开连接。

场景3:

ab -n 10 -c 2 http://172.16.1.27/。没使用-k选项时,每次事务完成,服务器就会发送FIN报文断开连接。然后客户端使用一个新的端口建立新的连接。因为是服务器主动发送fin报文,客户端在收到服务器的fin报文之后,就立刻发送syn重建连接,这个时候原来的连接处于close_wait状态,原来的端口还不能使用,所以选用新的端口来建立连接。客户端IP协议栈配置了tcp_tw_reuse=1,在这里没有什么作用。因为是服务器主动发送的FIN报文,所以客户端根本不会进入time_wait状态,而是在发送了fin+ack、并且服务器回复了ack后,进入close状态,这时原来的端口就彻底释放了。ab -n 100000 -c 100 http://172.16.1.27/也能够全部成功,而且4.8秒就完成了,这个时候客户端和服务器端肯定都重复使用了之前的端口。这里apache服务器要配置tcp_tw_reuse=1、tcp_tw_recycle = 1,否则客户端的端口号被遍历完后,apache会因为那些连接还处于timewait状态而拒绝再次的连接请求。timewait的超时时间是60秒。

报文分析:

对于每个事务:

情况1:客户端发送HTTP request,服务器发送HTTP response(捎带ACK),客户端发送一个ACK。一个事务3个报文。

情况2:客户端发送HTTP request,服务器发送TCP ACK,服务器发送HTTP response,客户端发送一个ACK。一个事务4个报文。

大多数是情况1,少部分是情况2。情况2是因为有时候服务器回复HTTP response比较慢,服务器端的TCP需要先行回复一个TCP ACK报文给客户端,避免客户端因为超时而重传请求。

每次事务最后一个报文客户端发送的ACK并没有捎带下一个事务的HTTP request。

说明:这里的HTTP response内容很少,所以可以放进一个报文中。内容大了,就需要多个报文来承载。

每次建立连接使用3个报文。每次断开连接使用4个报文。是标准的三次握手和4次挥手。建立和断开连接的报文中,没有捎带http请求或者应答。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AB测试是指通过将测试对象随机分成两组,然后控制其他变量一致的前提下,对其中一组进行某种行为或者功能的干预,然后计算AB效果的差异。在进行AB测试时,为了确保实验结果准确可靠,需要注意一些关键点。首先,实验的埋点、分流和统计需要没有问题,即各个方案的数据表现应该一致。如果发现各个方案的数据表现存在显著差异,则意味着实验的埋点、分流或统计中至少一项有问题。其次,需要确保各实验组的用户特征分布均衡,避免引入额外的变量,从而导致实验结果不准确,甚至出现辛普森悖论等问题。常见需要校验的特征包括性别比例、系统型号比例、好友个数等。 通过AB测试,我们可以对比两组的数据表现,进一步了解干预行为或功能对用户行为或结果的影响。这样可以帮助我们做出更准确的数据分析和决策。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数据分析——AB实验](https://blog.csdn.net/weixin_38617657/article/details/113869825)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [数据分析AB测试](https://blog.csdn.net/DD18203614685/article/details/126865612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值