跳至主内容

Centos Stream 9 上 RabbitMQ 节点的初始内存占用过高

·阅读 2 分钟

RabbitMQ 团队和社区成员最近发现了一个奇怪的现象,新启动的节点可能会消耗惊人的大量内存,例如 1.5 GiB 左右。我们想与社区分享我们的发现,并解释可用的短期和长期解决方案。

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

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

有两种方法可以缓解这个问题

  • 降低运行节点的用户的(通常名为 rabbitmq)文件句柄限制
  • ERL_MAX_PORTS 环境变量设置为一个较低的值 设置 ERL_MAX_PORTS 环境变量

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

© . This site is unofficial and not affiliated with VMware.