我们的服务器使用RabbitMQ作为消息中转的容器。某天我怀疑RabbitMQ队列 是否都能及时消化。于是用命令查询了下:rabbitmqctl list_vhosts | grep -P ".*\.host" | xargs -i rabbitmqctl list_queues -p {} | grep "queue"。 不查不知道,一查吓一跳:大多数服务器的队列基本上都是空的,但是有些服务器的某个队列竟然有超过500W条的记录。一般 RabbitMQ进程占用内存不过100M-200M,这些队列超长的 RabbitMQ 进程可以占用超过2G的内存。 显然消息队列的消费者出现了问题。开发查看日志发现作为该队列消费者的Java服务的日志也卡住了,重启服务 后 (这点做得不对,应该用jstat、jstack进行排查,而不是直接重启