消息积压了该如何处理?
优化性能来避免消息积压
一、发送端性能优化
增加生产者的批量发送的大小或者并发数来提高发送速度
对于实时性比较高的业务场景通过增加并发数来加快消息发送速度,对于一些不关心时延的业务可以通过增加发送批量数来提高发送速度;
二、消费端性能优化
使用消息队列过程中,大部分性能问题出现在消费端,所以一定要保证消费端的消费性能要高于生产端的发送性能,这样的系统才能健康的持续运行
除了优化消费端的消费业务逻辑,可以提高消费端的并发消费数
在扩容 Consumer 的实例数量的同时,必须同步扩容主题中的分区(也叫队列)数量,确保 Consumer 的实例数和分区数量是相等的
三、线上消息积压问题,如何处理?
导致消息积压的问题一般分为两种:要么发送变快了,要么消费变慢了
一般消息队列都内置了监控功能,可以通过监控来分析具体原因
如何处理:
- 消费端扩容
短时间内不太可能优化消费端的代码来提升消费性能,唯一的方法是通过扩容消费端的实例数来提升总体的消费能力
- 服务降级
如果短时间内没有足够的服务器资源进行扩容,没办法的办法是,将系统降级,通过关闭一些不重要的业务,减少发送方发送的数据量,最低限度让系统还能正常运转,服务一些重要业务。
- 异常监控
还有一种不太常见的情况,你通过监控发现,无论是发送消息的速度还是消费消息的速度和原来都没什么变化,这时候你需要检查一下你的消费端,是不是消费失败导致的一条消息反复消费这种情况比较多,这种情况也会拖慢整个系统的消费速度
网友评论