RabbitMQ 内存和磁盘警告

  • Post author:
  • Post category:其他



内存和磁盘警告

有两种情况下,Rabbit MQ会停止读取客户端的连接socket,为了防止crash崩溃,这两种情况是:

内存使用达到配置值

磁盘空间下降到配置值下

在这两种情况下,服务器会临时阻塞连接—服务器会暂停读取发布消息的客户端的连接,连接心跳监控也会被禁用,在rabbitmqctl和管理查建中的所有网络连接如果是blocking状态,意味着他们没有尝试发送,因此可以继续,如果是blocked状态,意味着他们已经发布了,现在需要被暂停。


集群的警告

当运行Rabbit MQ集群的时候,内存和磁盘警告是集群范围的,如果一个节点达到了限制,所有的节点都会阻塞连接。

这样的意图是停止生产者,但是让消费者继续不受影响,但是因为协议允许生产者和消费者在同一个Channel或者同一个连接的不同Channel上进行操作,这个逻辑是不完美的,在实践中,不会产生任何问题,因为节流作为一种延迟被观察,尽管如此,建议使用单独的连接分别作为生产和消费。


文件描述符耗尽 Running out of File Descriptors

当服务器使用了操作系统分配给它的所有文件描述符,它会拒绝客户端连接,参考 “


网络指南


” 学习更多。

当客户端尝试发送比服务器接收消息快的时候,它们会进入瞬时的流控。


相关主题

内存如何限制工作

磁盘如何限制工作

客户端可以检测它们是否被阻塞


内存警告

Rabbit MQ服务器在启动和执行 rabbitmqctl set_vm_memory_high_watermark

fraction

的时候会检测机器上的RAM大小,默认情况下,Rabbit MQ使用内存超过40%的时候,会发出内存警告,阻塞所有发布消息的连接,一旦警告解除(etc,服务器paging消息到硬盘或者分发消息到消费者并且确认)服务会恢复正常。

默认的内存阈值是40%,注意,这并不会阻止Rabbit MQ Server使用不到40%,仅仅意味着到达这个点的时候,发布者会被扼杀,最坏的情况下,Erlang虚拟机会引起双倍的内存使用(RAM的80%),强烈建议开启操作系统的SWAP和Page Files。

32位架构每个进程的内



版权声明:本文为qq_33814088原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。