00:00
好,上节课啊,我们把整个测试环境已经准备好了,那接下来呢,我们就开始正式的一个测试。好,那测试的代码呢,是这样的I并卡卡producer啊,然后呢,这是测试的这个脚本,然后杠杠topic,那topic刚才我们创建的是不是TOPIC2啊啊TEST2啊,那这块呢,要注意一会修改一下,然后record size大小呢是100,什么含义呢?也就是说你写的这个测试数据每条的大小呢是100个字节。那100个之间一条,那我传输多少条呢?哎,我一共传输是1000万条。啊,一共1000万条,那后面还有一个参数,我们设置为负一,那这个呢,其实是这个吞吐量的一个含义,比如说设置你这个卡法吞吐量多大,那这里面设置负一表示呢,我不限流,比如说尽可能快的去生产数据。你能多快就多快,这样才能测出来它最快的一个生产能力,是这样吧,嗯,OK,那后面还有一个参数呢,这个呢是啊啊purpose其实呢,就是连接对应的卡挂机群。
01:02
OK,那我们来看一下效果哈。复制复制之前呢,我们。在这里改一下。注意改一下这个topic啊,Test呢,我们这里面是TEST2 OK执行。现在呢,是达到了14兆每秒,对吧,然后16兆每秒。诶,这个起点也降下来了,嗯。哎,又是十兆啊,正常情况下它应该是围绕着15兆每秒左右啊,上下的一个波动啊,这个时间比较长,我就直接给它结束了。那那我们把这个图定下来。解释一下这是什么含义?看一下这是我们对应的这个测试结果啊,这样,这是我之前打印的哈。嗯,这个呢,是卡布卡吞吐量啊,你看这个值是不是正常围绕在这个15兆左右啊,那15兆左右符不符合我们的要求,比如说这个网络有没有限制我们这个卡卡的生产速度呢。
02:11
这怎么看是这样一个情况吗?哎,那大家回忆一下,我们1021031043台集群,哎,总共的网络带宽是不是30兆每秒左右。因为比如说102它自己是12.5啊,幺零三十二点五,幺零四十二点五,然后受硬件条件以及你运行的程序,它会多多少少影响一部分带宽,那这样的话呢,它是维持在30兆每秒左右是吧,这是总共三台机器的一个总带宽。但是你别忘了呀,我这里面是不是还有一个副本啊,就是两个副本,那你两个副本的话呢,那你就得总吞吐量除以一个二,因为你涉及到一个跨进行拷贝,你虽然说拷贝到这了,对吧,上入到这,它同时还得往这去。哎,所以说就会影响它一部分性能,相当于是传输了两份啊,那这个速率呢,是15兆每秒,相当于跟你的网速达到一致。
03:04
OK吧,那这个网速会限制对应带宽,如果这个网速不限制的话,是不是应该跟你这个硬盘,比如说你如果是机械硬盘,那就是100兆每秒左右,那如果你是固态硬盘,是不是应该达到300兆甚至400兆每秒左右啊。这样的情况OK,那你说现在得出的结论就是网络带宽和对应的副本其实都会影响对应的吞吐量。好,这是第一个结论,那接下来我们再来往下看。所下来下面我调一个这个BA size,它发里面是不是有这个值啊,这个值呢,它默认的是。16K相当于我这个。生产这块我产生的数据。诶,我攒了多少之后会发送到卡法的这个里面去。那就说来一条就发一条呗,那这个效率肯定很低,那正常默认值这个败赛呢,是攒到16K之后统一批量的发送到卡。那看一看这个bad size我怎么调,那如果这个bad size你调的比较小,那就会降低这量。
04:03
那会不会呢?我们试一下,比如说我们将这个bad size给它设置成500,你默认不是16K吗?那我现在给它改成500,你看这个吞吐量它会不会下降?我只是在末尾再加上对应的这个参数走。之前默认的这个网络带宽打满是不是15兆,15兆每秒左右啊。那看一看现在的结果,你看变成多少了,变成了是每秒钟一兆左右了。然后一兆左右。再来一个。哎,还是这些啊,后面我们就不看了啊,也就说现在啊,这个be size这个参数,它会影响到对应的你的吞吐量。OK,那有同学说,那你这个BA size减小了会降低吞吐量,那如果这个BA size我调大,会不会提高吞吐量呢?啊会提高,但是会提高它会带来什么负面影响呢?如果你这个size过大,它会增加消息的一个延迟,你想啊,这是这个。
05:01
诶容器对吧,容器默认的是16K,但是现在假如说你给它调成64K了。那也就是说我到达64K的时候,我会统一往卡瓦里面发送一批次,那你先进来的数据和最后进来的数据,那中间是不是有延迟啊,那假如说啊,这你这里面就是说我等待着五秒钟之后,那才会把这个64K内存。打满,然后才会往下。那延迟不就是五秒吗?那反过来,如果我这个延迟更大,我说是十分钟,十分钟才把64K的数据打满,那你还要等十分钟吗。是吧,哎,所以说这块呢,呃,这个地方不是越大越好,当然了也不是越小越好,你要根据你的生产情况进行灵活的一个调整啊。啊,这是这个结论值,那其实呢,还有一个值是这个LMS。那这是什么含义呢?哎,大家想这个场景哈,刚才说了,我们说这个bad size我可以设置成64K,那甚至我可以设置更大,比如说几兆。
06:00
那就会出现一个情况,比如说可能过了十分钟啊,我这个64K或者十兆的这个容器还没有积满。那怎么办?那我数据就一直不往外发吗?那很显然不可能,哎,那我们就可以设置这个值,比如说呢,这个值啊,我设置五毫秒什么含义呢?就是不管你这个容器到没到64K。那我都会五毫秒就要把这里面的数据清空。哎,说影响你这个吞吐量大小啊啊,有这么几个参数,Bad size以及ler Ms。哎,往出发OK吧,哎,那我们实际上环境呢,要考虑吞吐量和延迟时间的一个平衡啊,这个要注意一下啊。那这是这个,呃,生产能力的一个压测。
我来说两句