我在 Kubernetes 集群上使用 RabbitMQ 的单个实例。RabbitMQ pod 可以访问 15Go 的 RAM,并且设置了 10Go 的高水位。
经过几个小时的使用(以及几个存储了 6000 万条持久消息的队列),RabbitMQ 的 UI 显示使用量为 4GB(超出 10GB 高水位),但 rabbitMQ pod 使用了近 12GB 的 RAM。
这个 pod 上除了 RabbitMQ 之外没有运行任何其他东西。ps
在 pod 上运行命令显示该命令/usr/lib/erlang/erts-8.3/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -st
使用了近 10GB 的内存:
root@rabbitmq-0:/# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
rabbitmq 1 0.0 0.0 4340 152 ? Ss Apr25 0:00 /bin/sh -e /usr
rabbitmq 131 0.0 0.0 11492 116 ? S Apr25 0:00 /usr/lib/erlang
rabbitmq 266 256 66.7 15384208 10272940 ? Sl Apr25 3596:13 /usr/lib/erlan
rabbitmq 364 0.0 0.0 4220 400 ? Ss Apr25 0:01 erl_child_setup
rabbitmq 376 0.0 0.0 11456 108 ? Ss Apr25 0:00 inet_gethost 4
rabbitmq 377 0.0 0.0 13552 1140 ? S Apr25 0:00 inet_gethost 4
root 406 0.0 0.0 20292 2508 ? Ss+ Apr25 0:00 bash
root 17817 0.0 0.0 20296 3280 ? Ss 14:35 0:00 bash
root 18322 0.0 0.0 17504 2068 ? R+ 15:05 0:00 ps -aux
4GB 和 10GB 之间的差异是正常的还是存在内存泄漏?
rabbitmqctl report
命令结果:
{memory,
[{total,4165388576},
{connection_readers,677672},
{connection_writers,282352},
{connection_channels,1721776},
{connection_other,2916512},
{queue_procs,2559842512},
{queue_slave_procs,0},
{plugins,7852776},
{other_proc,33485720},
{mnesia,120680},
{metrics,12540648},
{mgmt_db,5339864},
{msg_index,142928},
{other_ets,19053856},
{binary,1476618400},
{code,24747054},
{atom,1033401},
{other_system,31550241}]},
RabbitMQ 3.6.9,Erlang 19.3