00:00
啊,海陆,然后。刚刚是讲过了那个连接词的控制器管理,然后呃,漏了一小部分内容啊,这小部分内容主要是这个有两个方法,静态方法。然后第一个是资源回收方法。啊,这个。呃,资源回收方法的话比较简单,就是大家看就是这个close时。呃不呃,已经过期的连接。然后这个是呃,关闭空闲连接。然后就是把。超时的,呃,空闲的超时时间,这时间单位这是些,呃,这个回收连接的一个方法啊,这个在功能测试中用不到,这个主要是在。啊,这个。GC的这个类里面,这个类是什么呢?就是在呃本地执行那个压测方法的时候,呃性能测试的时候,呃就是在连接池,它有有可能会回收呃不及时,然后就导致比如说诶你每个路由,每个路由设置的最大连接池是呃500,但你的并发是300。
01:17
啊,理论上来说是没问题的,但是啊也有可能这些连接池连接,连接池里面的连接有时候占用的太多,或者回收不及时的话,它就会导致他的空闲,然后无法再重复重复使用,然后这个时候就需要这个。呃,启动这个线程,然后执行那两个回收的方法,然后你看我在这里设置的是休眠三秒,然后去。呃,循环的去启动这个。那个连接池的回收方法就这两个啊,还有一个就是这个初始化连接池配置啊,这里边主要是因为。啊,有一些那个。那个那个怎么说呢,就是功能测试跟压测还是非常不一样的,呃,主要体现在就是超时的控制以及。
02:11
那个城市的控制啊,因为在呃那个普通的功能测试的时候,其实可以不管那个超时的时间,因为我有那个超时控制器去超时的,呃控制器其实它包含它的功能,是包含在那个同时控制器里面的,这个就可以完全的呃就把这个问题搞定了,但是压测的时候就不一样了,你比如说。你一个接口,其实呃,它如果是响应到两三秒,其实还是可以。有响应的可以收到响应的,但是啊,比如说参与方说这所有的接口,只要响应超过两秒,我就认为它是错的,他他就是不不可接受的,然后这个时候我们就需要去重新调整这个,呃,响应超时的这个时间设置,然后才能达到符合啊需求方的。
03:06
这个测试结果也更加的就是说严格一些,还有就是这个重试控制器,重试控制器的话,我这里采用的方案是把那个重置次数给它设为零,大家看一下这个重置次数。重次数会重置他这个重置次数,然后啊,重新把他那个就开卡,这这个呃给拿过来。然后鸡蛋它,嗯,比如说是。呃,响应超时,没有响应的异常,这这一类的,只要有报异常的话啊,我就认为这个这一次的接口请求是失败的,然后就统计在那个错误率里面。主要就是这两个方法的不一致,然后中间这个save time这个。嗯,这个参数主要是用来去嗯做一些过滤啊,比如说我这次测试发送了1万或者10万个请求,然后这10万个请求里面啊,我可能只有呃,有比如说需求方说啊,超过两秒的,我就认为他是不通过的,我就直接把它报错,然后这个timeout我就设置为2000。
04:21
然后但是呢,呃,在实际测试,实际测试的过程中呢,嗯,如果是本地直接报错。然后,但是有可能服务端还在处理这个请求。就是。我把请求丢给服务器,服务器从我丢丢请求开始,然后两秒。我就把这个认为他就响应超时了,然后就能记记他,呃,失败。然后,但是服务器可能还在处理这个请求,这个时候。如我不,其实这种情况是不方便去排查呃,服务响应较慢的原因的啊,因为我没有记录这个响应超时的这个请求。
05:08
因为那所以呢,然后我这里就设置了一个except time,比如它一般来说都是小于超时的,也就是说比如说呃,需求方说两秒以上算失败,这个这个set time我可能就设1.5秒。然后所以我就会把一点响应时间在1.5秒到两秒的,所有的请求的一些必要的参数,我们这儿一般就是一个request ID。唯一的呃且随随机且唯一的request的ID记录下来,然后拿到这个request ID,然后通过一个分布式的日志追踪系统啊,就把这个请求的啊来龙来龙去脉给。呃呃,拿到,然后再去分析哪块是耗时比较长的,这方便于开发去排查调优的这一块内容。
06:07
OK,加完了。
我来说两句