springboot+rabbitmq 一个队列开了300个消费者 速度很慢是什么原因?
公司系统要将商品上架到拼多多商家后台中, 每天最少10万件,算了算平均 一分钟要上传最少70个商品,单线程的情况下一件商品需要1分钟左右,在本地开了50个消费者测试上架速度 有显著提升,但是放到三台服务器上开了将近300个消费者 速度却很慢,是不是rabbitmq需要做什么配置啊??新手不懂
这个是消费者代码
配置文件
这是yml配置文件,求大佬告知如何优化。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
回复
就是服务器承不住那么多的消费者试了好久找到了可开最大的阈值就可以了,现在开了四百多个消费者 每天处理API请求可以达到2000W~4000W次 从7月份到现在没有出现过大问题了,用了两台服务器做消费者一台做生产者
他说解决了 又不说咋解决的 这不难受么。:triumph:
你这个速度很慢是什么原因,我也遇到了
消费者最外层的方法 catch里面写 channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); 出异常了 false表示忽略 不然会一直重新回到队列死循环
回复
回复
解决了 。service层 catch块异常语句那个e.getcause().getMessage()方法报错...把代码全部更新到服务器看下效果,,
上面的问题解决了 现在有个新的问题
在消费者中调用service层方法后 一直报错异常, 然后死循环的调用同一个消费内容。
但是我service层方法中有用try catch块去处理异常 ,我打断点看了 但是他在service中调用报错了会捕获并且做相应的处理
处理完消息队列就报错监听失败 然后一直处理这种数据 ,,,,这个怎么解决
调试方式: 把业务代码全部注释掉, 然后, 打印简单的hello world. 看看, 正常的队列消费是否达到期望值? 如果达到, 说明你那些业务代码,有瓶颈. 如果没达到, 说明MQ配置有问题! 就这样啦!
是我写的呢。。。。
第二个图中有set消费者最大数量的地方,看你写的是50。这个代码质量还可以,你能问出来这个问题这个不是你写的吧?
找到解决方案了 但是又出现新的问题了。。
有可能是其它方面的瓶颈,数据库?内存?GC?IO?之类的,这个可以监控下,一个个排查。
我三台服务器 一台4个tomcat 一台2个tomcat 每个tomcat启动40个消费者 还有一台开了20个消费者 现在之前的问题解决了 但是有个新的问题 看下面我发的内容。。
@RabbitListener(queues = "xxxx",concurrency = "10") concurrency 开启多个消费者
哪个地方开50个线程?