【发布时间】:2017-10-19 21:39:33
【问题描述】:
我要求永远不要将消息写入磁盘。 RabbitMQ 文档声明如下:
持久消息和瞬态消息都可以写入磁盘。持久消息一到达队列就会被写入磁盘,而瞬时消息只会被写入磁盘,以便在内存压力下可以将它们从内存中逐出。
“在记忆压力下”的含义有些模糊。有没有办法确保永远不会将瞬态消息写入磁盘?遇到这种情况,如果不能投递,丢了邮件也没关系。
【问题讨论】:
标签: rabbitmq
我要求永远不要将消息写入磁盘。 RabbitMQ 文档声明如下:
持久消息和瞬态消息都可以写入磁盘。持久消息一到达队列就会被写入磁盘,而瞬时消息只会被写入磁盘,以便在内存压力下可以将它们从内存中逐出。
“在记忆压力下”的含义有些模糊。有没有办法确保永远不会将瞬态消息写入磁盘?遇到这种情况,如果不能投递,丢了邮件也没关系。
【问题讨论】:
标签: rabbitmq
仅当服务器处于高内存压力下(即 RAM 使用率高)时,才会将瞬态消息刷新到磁盘。 (例如,如果排队的消息数量迅速增加,就会发生这种情况。)当这种情况发生时,RabbitMQ 将开始将消息刷新(页出)到磁盘以释放 RAM - 当这种情况发生时,排队速度将恶化。来源here。
根据这个线程:https://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2013-May/027161.html 看起来你可以将 vm_memory_high_watermark 设置为一个非常高的值。通过这样做,RabbitMQ 将在它有机会写入磁盘之前被 OOM 杀死,因为 RabbitMQ 会表现得好像它有很多可用内存,而实际上它没有。
【讨论】: