【问题标题】:Prevent RabbitMQ from writing messages to disk防止 RabbitMQ 将消息写入磁盘
【发布时间】:2017-10-19 21:39:33
【问题描述】:

我要求永远不要将消息写入磁盘。 RabbitMQ 文档声明如下:

持久消息和瞬态消息都可以写入磁盘。持久消息一到达队列就会被写入磁盘,而瞬时消息只会被写入磁盘,以便在内存压力下可以将它们从内存中逐出。

“在记忆压力下”的含义有些模糊。有没有办法确保永远不会将瞬态消息写入磁盘?遇到这种情况,如果不能投递,丢了邮件也没关系。

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    仅当服务器处于高内存压力下(即 RAM 使用率高)时,才会将瞬态消息刷新到磁盘。 (例如,如果排队的消息数量迅速增加,就会发生这种情况。)当这种情况发生时,RabbitMQ 将开始将消息刷新(页出)到磁盘以释放 RAM - 当这种情况发生时,排队速度将恶化。来源here

    根据这个线程:https://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2013-May/027161.html 看起来你可以将 vm_memory_high_watermark 设置为一个非常高的值。通过这样做,RabbitMQ 将在它有机会写入磁盘之前被 OOM 杀死,因为 RabbitMQ 会表现得好像它有很多可用内存,而实际上它没有。

    【讨论】:

    • 感谢您的链接。虽然我看不到最佳解决方案(vm_memory_high_watermark 选项可以完成我认为的工作,但需要进行崩溃恢复)。然而,该线程还谈到了我以前没有考虑过的 RAM 磁盘,值得研究,所以谢谢你!
    猜你喜欢
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2021-08-18
    • 2015-06-17
    相关资源
    最近更新 更多