[root@iZ23nn1p4mjZ logs]# rabbitmqctl status Status of node rabbit@iZ23nn1p4mjZ ... [{pid,15425}, {running_applications, [{rabbitmq_management,"RabbitMQ Management Console","3.5.6"}, {rabbitmq_management_agent,"RabbitMQ Management Agent","3.5.6"}, {rabbit,"RabbitMQ","3.5.6"}, {amqp_client,"RabbitMQ AMQP Client","3.5.6"}, {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.5.6"}, {webmachine,"webmachine","1.10.3-rmq3.5.6-gite9359c7"}, {mochiweb,"MochiMedia Web Server","2.7.0-rmq3.5.6-git680dba8"}, {xmerl,"XML parser","1.3.9"}, {os_mon,"CPO CXC 138 46","2.4"}, {mnesia,"MNESIA CXC 138 12","4.13.2"}, {inets,"INETS CXC 138 49","6.1"}, {sasl,"SASL CXC 138 11","2.6.1"}, {stdlib,"ERTS CXC 138 10","2.7"}, {kernel,"ERTS CXC 138 10","4.1.1"}]}, {os,{unix,linux}}, {erlang_version, "Erlang/OTP 18 [erts-7.2] [source-e6dd627] [64-bit] [smp:4:4] [async-threads:64] [hipe] [kernel-poll:true] "}, {memory, [{total,658753984}, {connection_readers,59653208}, {connection_writers,5883032}, {connection_channels,16427472}, {connection_other,77342544}, {queue_procs,34311280}, {queue_slave_procs,0}, {plugins,1674624}, {other_proc,15139104}, {mnesia,2057392}, {mgmt_db,36575208}, {msg_index,5701536}, {other_ets,4435216}, {binary,359802776}, {code,20170175}, {atom,711569}, {other_system,18868848}]}, {alarms,[]}, {listeners,[{clustering,25672,"::"},{amqp,5672,"0.0.0.0"}]}, {vm_memory_high_watermark,0.4}, {vm_memory_limit,3301947801}, {disk_free_limit,50000000}, {disk_free,3977351168}, {file_descriptors, [{total_limit,65435}, {total_used,2085}, {sockets_limit,58889}, {sockets_used,2082}]}, {processes,[{limit,1048576},{used,24844}]}, {run_queue,1}, {uptime,72713}]
可以发现,binary部分占用的内存特别多,这一部分主要是connection的消耗+一些额外小部分的元数据。每个连接占用的内存可通过/proc/sys/net/ipv4/tcp_rmem得到,例如:
[root@osm ~]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 4194304
也可以通过rabbitmq.config配置的下列部分进行覆盖:
[{rabbit, [{tcp_listen_options, [binary,
{sndbuf, 1024},
{recbuf, 1024},
{buffer, 1024},
{packet, raw},
{reuseaddr, true},
{backlog, 128},
{nodelay, true},
{linger, {true, 0}},
{exit_on_close, false}]}]}]
=ERROR REPORT==== 8-Dec-2016::08:49:28 ===
closing AMQP connection <0.5859.3> (127.0.0.1:49265 -> 127.0.0.1:5672):
Missed heartbeats from client, timeout: 10s
=ERROR REPORT==== 8-Dec-2016::08:49:28 ===
closing AMQP connection <0.30760.2> (127.0.0.1:45547 -> 127.0.0.1:5672):
Missed heartbeats from client, timeout: 10s
=ERROR REPORT==== 8-Dec-2016::08:49:29 ===
closing AMQP connection <0.10927.3> (127.0.0.1:50608 -> 127.0.0.1:5672):
{handshake_timeout,frame_header}
=ERROR REPORT==== 8-Dec-2016::08:49:29 ===
closing AMQP connection <0.11271.3> (127.0.0.1:50720 -> 127.0.0.1:5672):
{handshake_timeout,frame_header}
=WARNING REPORT==== 8-Dec-2016::08:49:29 ===
closing AMQP connection <0.10548.3> (101.69.255.190:38261 -> 120.27.140.42:5672):
connection_closed_abruptly
=WARNING REPORT==== 8-Dec-2016::08:49:29 ===
closing AMQP connection <0.10559.3> (101.69.255.190:38262 -> 120.27.140.42:5672):
connection_closed_abruptly
=WARNING REPORT==== 8-Dec-2016::08:49:29 ===
closing AMQP connection <0.10581.3> (101.69.255.190:38264 -> 120.27.140.42cn:5672):
connection_closed_abruptly
https://www.rabbitmq.com/blog/2014/10/30/understanding-memory-use-with-rabbitmq-3-4/