【dperf系列-1】dperf是什么:一款开源的千万级HTTP CPS压测工具

dperf是一款面向四层网关(如四层负载均衡,L4LB)的高性能的压测工具。近日已由百度开源,按照apache license v2发布。

通常,对四层负载均衡的测试都要用商用测试仪。如思博伦、IXIA等,价格差不多是1 HTTP CPS = 1RMB。对于网络设备厂商来说,商用测试仪是标配;但是对于很多科研单位的研究者来说,买一个思博伦是不太现实的;据我了解,很多互联网厂家也不太喜欢买商用测试仪,苦了一堆做网关的开发者。

我也是被逼得没办法,就写了一个测试仪,毕竟这是一个掉头发的事情,现在后悔也来不及了,不说也罢。

dperf基于dpdk实现的,里面有一个高度优化、高度定制的TCP协议栈(后面再写文章介绍),实际上是一个超级简单的TCP协议栈,复杂的协议栈咱也写不出来;不过里面的优化是做的可以的,也有专利技术(还没批下来),后面细说。

dperf新建性能的确很强。用两个核,一个核运行dperf客户端,一个核运行dperf服务器,在X86(Intel(R) Xeon(R) Silver 4214)上能够测出230万HTTP CPS新建,在鲲鹏902上可以测出210万。如果用ab去测试nginx,CPS只有2.5万,性能相差1百倍。

dperf并发也很强。由于dperf一个连接只消耗了64个字节,nginx可能要消耗64K,四层负载均衡可能要消耗几百个字节。对于dperf来说,几十个亿的并发简直就是小菜一碟。

dperf的带宽受制于网卡。带宽这个事就不是个事,上个好的网卡就可以了。

上面的这些性能,都不是我最喜欢的,因为性能太强了,很多时候用不上,花了很多时间去优化,白白掉了很多头发不说,也牺牲了很多陪娃的时间。

dperf有一项我最喜的功能:重传统计(丢包统计)。对传统tcp协议栈来说,丢个包是正常的,丢了就丢了,重传一个呗。这怎么可以呢,我估计第一个不同意的是做交换机的朋友,第二个不同意的是做四层负载均衡的朋友,哪里都可以丢包,我这里就是不能,丢包的锅我不能背。dperf也认为重传是不对的,它把重传做了计数,同门通过重传计数,就能够实时观测到,链路上是否丢包了,如果丢包了,再去看交换机,被测设备等,如果测试下来,没有丢一个包,那就妥妥的了。

用Linux协议栈上工具(ab, wrk)做性能测试朋友就没办法测出丢包数,糊里糊涂就过去了;如果你实在是看不惯,就是要和丢包过不过去,就试用一下dperf做测试吧。

如果你已经开始使用了dperf,请告诉我,在使用dperf的过程中有什么问题,请在dperf的issue上提问题,也可以给我发邮件,谢谢。

项目当前是110个star。先立一个flag:我希望dperf在2022年能够达到1000个star。
祝大家圣诞快乐。

你可能感兴趣的