Performance 当我们添加更多订阅服务器时,RabbitMQ读取性能不会增长?

Performance 当我们添加更多订阅服务器时,RabbitMQ读取性能不会增长?,performance,rabbitmq,worker,subscriber,Performance,Rabbitmq,Worker,Subscriber,我们一直在试验RabbitMQ。在这些实验中,我们看到了一些关于工作队列的奇怪行为 观察结果之一是,当我们添加或删除从队列中读取的进程时,队列的读取性能不会改变。例如:当单个进程以800 msg/秒的速率处理消息时。添加第二个(类似)进程的结果是两个进程都以400 msg/秒的速率处理消息,总速率为800 msg/秒。当我们关闭其中一个进程时,另一个进程的消息速率增加到(你猜到的)800消息/秒 这不是我们所期望的。当我们向队列中添加第二个读卡器时,为什么吞吐量没有翻倍 我们正在使用Rabbit

我们一直在试验RabbitMQ。在这些实验中,我们看到了一些关于工作队列的奇怪行为

观察结果之一是,当我们添加或删除从队列中读取的进程时,队列的读取性能不会改变。例如:当单个进程以800 msg/秒的速率处理消息时。添加第二个(类似)进程的结果是两个进程都以400 msg/秒的速率处理消息,总速率为800 msg/秒。当我们关闭其中一个进程时,另一个进程的消息速率增加到(你猜到的)800消息/秒

这不是我们所期望的。当我们向队列中添加第二个读卡器时,为什么吞吐量没有翻倍

我们正在使用RabbitMQ.NET客户端(与EasyNetQ高级API结合使用)。我们已打开发布服务器确认,使用50的预回迁计数(Qos),在处理消息时确认消息,并使用持久的交换、队列和消息


我们一定是做错了什么,任何指向正确方向的指针都是非常受欢迎的…

队列中是否有未使用的消息?800/秒(对于rabbit来说是非常低的)很可能是您发布的速度…队列已经满了,我在那里输入100000条消息,然后启动消费者。请注意,我们正在试验的vm非常小。但仍然如此。这里有人遇到了同样的问题,这似乎是正常的行为。我们将尝试使用自动确认来查看差异,但这将需要重新编码easynetq。。。将发布结果。是否需要持久消息?将每条消息写入磁盘可能非常耗时。除此之外,如果您遇到easynetq的问题(我从未尝试过),按照我的口味,标准RabbitMQClient nuget工作得很好:)很抱歉响应太晚。是的,我们确实需要持久消息才能在(RabbitMQ)服务器重新启动后继续存在。也就是说,我们在代码中发现了一些瓶颈,并将性能提升到了单个小型VM实例的预期水平(4000 msg/秒)。但是,所描述的行为没有改变。全速读取时,负载在队列使用者之间分散。我们将开始尝试其他平衡技术(使用不同的交换),并在多台机器上试验同步队列。。。