我在一个相当大的服务器(32GB RAM、duel SSD、Octa Core Intel 等)上运行 RabbitMQ 的单个实例,并且有大量应用程序从 RabbitMQ 发布和使用,没有任何问题。
今天早上在部署另一个应用程序时,它根本不会启动抱怨它无法连接。我减少了我的应用程序中的消费者数量,它连接得很好。查看我的 RabbitMQ 仪表板,我可以看到消费者数量固定为 900;再次增加我的应用程序中的消费者数量,并且应用程序抛出各种无法连接到 RabbitMQ 的异常。
所以看看固定在 900 的消费者数量和我所看到的行为,我猜我已经达到了某种消费者限制。
服务器以 1% 的速度空闲并查看可用的 Erlang 进程,我看到了1048576 available
,因此服务器上剩余的容量很大。
如何增加 900 个消费者的人为限制?
您可能达到了文件描述符的最大数量。我想您使用的是 Linux,并且许多发行版默认将此 ulimit 设置为 1024。当 RabbitMQ 达到这个限制时,它不能接受更多的连接。
RabbitMQ 网站上有一篇文章介绍了您可以/应该调整哪些与网络相关的参数,特别是如何增加文件描述符 ulimit。
似乎 RabbitMQ 节点根本无法处理更多连接,通过集群 RabbitMQ 解决了它。