跳至主要内容

CentOS Stream 9 上 RabbitMQ 节点的初始内存消耗过高

·阅读 2 分钟

RabbitMQ 团队和社区成员最近发现了一种奇怪的情况,其中新启动的节点可能会消耗大量内存,例如 1.5 GiB 左右。我们希望与社区分享我们的发现,并解释可用的短期和长期解决方法。

一些最近的 Linux 发行版,例如 ArchLinux、RHEL 9 和 CentOS Stream 9,都附带了最新版本的 systemd ,它将默认的打开文件句柄限制设置为 1073741816 或大约十亿。这远高于 CentOS 8 等旧发行版使用的默认值。

对于许多软件来说,这没有任何变化。但是,Erlang 运行时会在具有非常高限制的系统上预先分配更多内存。这导致新启动的 RabbitMQ 节点在没有任何数据或有意义的客户端活动的情况下,占用内存出乎意料地高。

有两种方法可以缓解此问题

对于给定的环境,哪个值更合适取决于工作负载。在 50,000 到 100,000 范围内的默认值应该可以支持许多并发客户端连接、队列和流,而不会导致运行时过多的预先内存分配。

© 2024 RabbitMQ. All rights reserved.