异步压测机制的浅谈

通常,“异步任务”都会涉及到两个对象,一个对象的输出,作为另一个对象的输入,比如,常见的消息组件kafka,就是这样,一个生产者,专门负责生产消息,一个消费者,专门负责消费消息。针对涉及这种“异步任务”的性能测试,要怎么测呢?需要关注哪些点呢?

为了更清晰的描述我的测试思路,暂且把上述两个对象分别称之为生产者和消费,生产者的输出称之为 消息

我的测试思路是:“分而治之”

什么是“分而治之”呢?简单说,就是分别压测生产者,消费者。虽然这两方是相互联系的,但是不妨碍我们的拆分测试,因为我们仅是对他们进行逻辑拆分,强调压测目标,简化测试任务。

和“同步”性能压测一样,
压测生产者时, 业务层面,关注tps、吞吐量(关注生产者的最佳服务能力--能同时为多少用户生产消息),操作系统层面,关注cpu,内存,io,网络资源等

压测消费者时,业务层面,关注tps、吞吐量(关注消费者的最佳消费能力--每秒能处理多少消息),另外需要关注生产的消息过期(假如有过期时间的话)之前能否全部被处理完成,是否会遗漏(可以考虑通过数据库、日志等查看相关记录是否缺失),操作系统参层,关注cpu,内存,io,网络资源等。


我们压测生产者和消费者时,都需要关注位于其中间的 服务商(如果有的话),看能否正常提供服务。

此外,压测消费者前,需要考虑消费者的消费方式:
1、    同步消费
如果是同步消费----每次处理完一条、一批数据才去消费下一批、条数据,那么压测消费者时,就不需要限制生产者的生产速度,只要生产速度大于消费速度即可。

2、    异步消费
如果是异步消费---一边获取消息,一边异步处理消息,那么压测消费者时,就要考虑消息生产者的生产速度了,因为可能产生获取消息的速度大于异步处理消息的速度,会导致消息堆积在消费者端,可能导致消费者因为消息堆积在内存无法及时释放导致oom、或者是其它问题。 

那怎么评估测试结果能否满足性能需求呢?和“同步”测试一样,也是需要看实际的业务性能需求。

评估消费者对象时,看实际业务消费速度是多少,然后同测试结果对比,如果消费能力大于实际消费能力,并且相关资源占用正常,那么可以说消费者对象的性能测试结果是满足需求的。

然后评估生产者对象时,看实际业务生产能力是多少,然后同测试结果对比,如果大于实际生产能力。如果无法获取实际业务中的生产能力,如果消费者是异步消费,那么可以看下消费者消费能力满足性能需求时,对应的生产能力是否达到了测试结果中的最大生产能力,如果没有,那么可以说生产者对象的性能测试结果是满足需求的。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的世界你不懂

你的鼓励将是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值