00:00
那这个这个标题叫做卡不卡之压力测试,或叫做性能测试啊性能测试那它要进行测试的话呢,用到的就是我们刚才给大家看到的那个消费者和生产者的性能测试脚本啊,就用它俩就行了啊,它俩就行了,呃然后咱们用这个脚本测试呢,同样也是能够去呃看出来就是咱们这个呃影响卡不卡这个存储量,或者影响它延迟的这个,呃,这个指标是什么啊,可能是CPU影响的,可能是呃内存,可能是网络,网络IO影响的,那一般情况下也还是这个网络是瓶颈啊,一般是网络是瓶颈啊好,那接下来咱们去呃演示一下这个性能测试到底怎么做啊,我们现在先做一个这个生产者的压力测试,生产者压力测试咱们用的就是producer performance test.sh啊,那这个所谓的生产者压力测试,其实就是我们往一个目标的topic里边去写数据,然后呢,去测一下我这个写的这个吞吐量,或者写的延迟是什么样的啊,是这样的啊来接来咱们来看一看这块怎么去测试。
01:00
啊啊,这边就是我们这个测试的这个脚本啊,这里边儿呢,我们需要给他传一些参数啊,那传的参数都有什么,我们看一下这个这个位置。啊,这个位置,那首先第一个就是什么record size对吧?Record这个指是什么呀。所谓的record值上。指的就是一条producer record,对吧?因为大家都知道生产者往消费者里发数据需要封装成一个producer record对象,对吧?那这个指的就是什么?就是一条数据有多大,那单位的是字节啊,然后下边呢是number record,那就是本次测试我一共发送多少条这个信息,或者多少条数据啊,是这样的啊,然后下面呢,有一个through put。啊through put,那这个through put这个指的是什么呢?是啊指的啥呀,是每秒发多少条消息啊,其实也也指的就是指的就是这个所谓的吞吐量,对吧?啊,那这个怎么设置啊,这个大家得知道怎么设啊,那如果说啊,我给这个through put我设一个具体的值啊,比如我设成多少呢?哎,设成一秒钟,比如让他发1万条啊,1万条,那你得到的结果就是什么呢?
02:12
那你得的结果就是,诶你这条你看啊,你现在相信已已经固定了你这个数数据的写入速率了,已经固定了啊,每条多大啊,然后呢,一秒钟发多少条,是不是就是这个死入库的决定的呀,对不对,那相当于你这个固定速率是不是已经定下来了呀,对不对,那你这个得到的结果还是这个吞吐量吗?那也不是了,那你测的就是啥了呀,就是延迟了啊,你就能得到你这个消息发泄的延迟是不是,哎,这是用来测延迟了,那我现在就想测极限吞吐量怎么办呢?那极限吞吐量就这么测就行了,把这个诶死入库的给它设成啥呀,比如说设成负一啊,设置负一那它就会怎么法呀,它就会以最大的速率去给你发这条消息啊,然后你就能测出来你的吞吐量了,能理解吧,啊就是这设成具体值,让你测的是啊延迟,那如果说你设成负一,那你测的就是吞吐量啊,这个得搞清楚啊好,那接下来咱们来给大家演示一下,比如说我现在呢,想去测试一下咱们这个吞吐量,那我这儿呢,就设成哎负一啊来,那现在我们把这个执行一下啊,CTRLC。
03:16
来我们就说随便在哪都可以啊,在131410105都行,来我们进到卡卡,呃,然后看一下啊,这里边儿他给我们指明了一个topic叫做T对吧,那这个test,这个topic咱们现在有吗?没有,那没有的话,我这样执行会不会报错?啊,其实不会卡不卡是不是有这样的一个功能啊,就是你往一个不存在的topic里边写,或者是从一个不存在的topic里边读的时候,它会自动创建这个topic对吧?啊,那自动创建的分区和副本都是多少啊,都是一啊自动上都是一啊好,那咱们就让一就一,那现在我们回车啊走看一下他这个测试的结果是什么样的,让大家看一下最开始是不是报了一个警告啊对不对,什么警告。啊,说什么这个,呃,去获取语言数据的时候,你看这是不是有一个获取语言数据的过程啊,对不对,前面不是给大家讲了吗?在获取原过程当中,我发现啊,我没有这个leader啊,Leader not available,为什么?因为这个topic都没有,完了之后它是不是会自动创建出来啊,创建出来就有了,那下边是他打印出来的这个结果,来我们看一下这个结果啊。
04:20
开始结果,那这里边我们相当于是一共发了多少条数据,发了10万条消息啊,这是我们自己设的啊,10万条啊,完了之后呢,呃,我们这个极限的吞吐量是多少呢?是多少是呃,7万多条每秒对不对,那折合成咱们这个大小呢,是6.8兆每秒啊,6.8兆每秒啊,这是我们这个极限的这个吞吐量啊,是这么大,就这么测啊是这么测出来的,那当然这个肯定还是和是没有关系啊,还是和哎网络有关系的啊,跟网络有关系的啊行,那这玩意之后呢,我们接着往下走。行,下边我们,呃,还有几个这个结果啊,这几个结果我们来看一看,这是啥啊,他给咱们打印出来的是啥,是什么这个平均的Li延迟吧,那这个是最大的延迟啊,这个什么百这个50TH,然后95TH,然后99TH 99.9TH,那这些怎么去理解它呢。
05:20
啊,平均的延迟咱们都知道是300多毫秒对不对啊,那这个300多毫秒延迟其实已经挺低的了啊,已经挺低了,然后这个最大呢是400多毫秒啊,这个是呃,400多毫秒这个延迟,那后边这个怎么理解,后边其实它相当于把咱们这个延迟的分布给咱们描绘出来了啊这样你就假设啊,它相当于是做了什么事啊,相当于把你这10万条消息,这个它的延迟做了一个什么东西啊,做了一个啊从小从小到大一个排序啊,从小到大一个排序啊,那相当于什么呀,比如说那这个相当是我的这个消息啊,这个record啊record啊1.1条一条的啊,然后从小到大做依次进行排序,那我这个肯定这个走势差不多是这样的,对吧?啊,有小的有大的啊,然后在这个排多少的时候呢?排50%的啊,这个位置,这相当于是50%的对不对,50%的这个延迟都在多少啊,都在346秒啊,360度,346毫秒以下,对不对,然后呢,百分之。
06:21
95的这个延迟呢,都在多少啊,大都在418 99%的都在425下边啊是这样,他大致把这个走势给你描绘出来了,就是这样把这个分布描述出来啊,这样一个作用啊,就是咱们这个主要就是参考什么呀,参考一般参考这个平均的啊,基本就可以了,参考这个平均就行啊行,这是咱们关于这个生产者的这个测试,就是咱们测的时候呢,能测延迟,也能测吞吐量,那主要是由谁决定的,由他决定的啊,主要由他决定,那我要设成呃这个负一,那测的就是吞吐量啊,那设成一个具体的这个值啊,那就是测的颜值啊,那要设成具体的值,你说我应该设多少比较合适呢?
07:01
啊,比如说我想测延迟,那设多少倍合适啊。包括这个大小我设多少比较合适啊,那这个就跟咱们真实的这个公司里边这个数据啊,去比较就行了呗,对吧,比如说我我现在我这个日志前边啊,我发送数据的每条日志大小,比如说是1K啊,那你这个是不是就得设成诶按照1K去去设置啊对不对,那这个假如说我这个呃,数据往这儿发的时候呢,我差不多呃一秒钟发这个呃10万条,那你这个吞吐量是不是就得按照10万条去设呀,对不对,然后呢,他就会模拟你这个生产环境,然后就给你测出来你的延迟是什么样的啊,是那样的啊啊,那咱们知道怎么用就行啊,这个吞吐量咱们得会测啊,吞吐量也得测啊,设成负一测吞吐量,一会咱们还得用这个值了啊,后边有用啊行,这是关于生产者,那接下来咱们再来看这个消费者啊,那消费者我们测的时候呢,我们怎么测来看一下,这是呃生产者,然后往下翻啊,下边呢,是那个消费者的压力测试啊,那下来我们看一下。
08:04
啊,那这个呢,是消费者压力测试的这个,呃,这个脚本啊,叫做consumer performance test,来看一下这里边的几个参数啊,像第一个JK啊,需要指明一个组开的地址,这个照他来就行,那第二个呢,指明一个你要消费的topic,那下边一个呢,叫做FA size,这个指的是什么?咱们卡不卡去消费数据的时候,是不是一次一次的去拉取啊,对不对?那这个FA send指的是每次拉取的这个数据的拉小啊,那下边的message指的是本次测试我一共要拉取的这个消费者这个信息的个数,哎,是多少啊,是这么几个参数。行,那咱们接下来呢,把这个去执行一下CTRLC啊,然后呢,放到咱们这个里边来执行啊,那这个呢,需要去呃消费一段时间,咱们稍微的等一会儿啊,看一看他这个结果是什么样的。嗯。稍微等一下,呃,咱们不等它了,这个因为咱们消费诶已经完事了啊,那咱们就看它就行了啊,就看它就行了,来我们看这下边。
09:09
呃,这个结果呢?这个咱们来看一看,这个结果是什么样的,咱们怎么去看它啊?呃,这个结果有点看不太,看不太出来了,为什么中间就多了一个警告,对不对啊,这个警告是什么?说这个existing before consumer啊,The expected number of messages啊,这个为什么呀?他说这个延迟,这个超时了,对吗?啊,这是咋回事,咱们看一下咋回事?呃,我们这消费的数据一共消费多少条,咱们消费一共多少条,咱们消费了一共是。呃,这是一一千万,不是1000万吧,啊是1000万对不对,那刚才咱们往里边写了多少。他们俩是同一个topic啊,都是这个,都是那个太子对吧?啊,同一个上面咱们写了多少,写了10万,但是我要消费1000万对不对,那所以说你后边是不是数据没有啊,咱们也没有往里边写,所以说是不是一直等不到你的数据,然后他就超时了,对吧?那所以应该是这个问题啊,那咱们现在把那个值改一下,刚才写的10万,那这回我就还消费10万啊,我去掉几个零啊,这应该是1万,然后10万,然后回车看这次的啊。
10:20
嗯。哎,这回就没问题了,就正常了对吧?好,那接下来我们看一下这里边这个东西啊,哎,其实这个才是正常的上下对应,我们上边是什么,上边相对是你这个结果的一个表头,然后下边是什么呢?呃,下边呢,相当是一个这个呃结果的一个这个值啊来咱们主主简简单看一下,相当第一个start time start time指的就是它呗,开始时间,哎n time就是哎节止时间啊那咱们重点看谁重点看这个。A consumed,然后呢,In,兆B啊,这个指的是什么呀?啊,只是呃,本次测试你一共消费了多少兆的数据啊,然后后边呢,有一个兆点second啊,其实这不应该是点,应是什么呀?应该是斜杠啊,就是速率,就是兆每秒,那应该是多少兆每秒啊,应该是呃4.46兆每秒,这是咱们读啊咱们读那后边这有一个啥,这有一个诶,Date consume in。
11:18
这个n message,这指的是什么?本次消费的条数对吧?啊条数,然后后边呢,有一个呃这个N呃条,然后点二秒,应该这应也是啥,应该也是每秒啊,就是一秒钟,诶消费诶多少条啊消费条那后边有什么这个re balance,然后这个time.MS啊这应该是一个,呃,应该是一个时间窗吧,呃,Rebell这个概念大家还记得吗?Rebit概念。Re balance,还记得什么叫re balance吗?所以re balance指的是这个啊,就是我们呃,卡不卡的消费者啊,啊,我是不是要消费一个topic对不对,一个topic当中呢,我有多个分区,那正常我们是不是会将咱们这个分区分配给我们的消费者呀?啊,那假如我现在啊,我增加了一个分区,或者说我消费者增加了一个,或者减少了一个,那这里边会涉及什么,这个分区是不是得重新分配啊,这个重分配的过程叫做re balance啊,就re balance,那咱们这儿呢,只有一个消费者,其实这块应该也没有这个重分配这个东西啊,所以后边内容咱们就先诶不看它了,我们重点看什么呢?重点还是看前面这个啊,就是我们这个消费的吞吐量啊,咱们得知道是怎么来的,哎,是这个,这是咱们的一个吞吐量,4.6兆每秒,相当于是啊,这个相当于是我们通过,哎,消费者这个压力测试呢,我们也能测出来,咱们一个消费者,呃,我的极限的消费速率是多少啊,咱们也能得到。
12:42
啊好,那得到这俩值之后呢,咱们能用它来干什么呢?这是重点啊,首先咱们现在知道怎么得到的,然后接下来咱们讲用它干什么啊,啊,我先把视频。
我来说两句