CentOS 上 RabbitMQ 网络问题排查清单
一 快速定位流程
sudo systemctl status rabbitmq-serverwget -O- http://localhost:15672nc -vz 127.0.0.1 5672ss -lntp | egrep ':(5672|15672|25672)'docker ps | grep rabbitmq 并确认 -p 5672:5672 -p 15672:15672 已映射nc -vz 127.0.0.1 5672 与 nc -vz 127.0.0.1 15672 均应成功nc -vz <服务器IP> 5672(AMQP)与 nc -vz <服务器IP> 15672(管理)sudo tail -n100 /var/log/rabbitmq/rabbit@*.log | grep -i "error\|warning\|connection_closed\|missed heartbeats"二 常见原因与对应修复
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanentsudo firewall-cmd --zone=public --add-port=15672/tcp --permanentsudo firewall-cmd --reloadsudo rabbitmq-plugins enable rabbitmq_managementhttp://<服务器IP>:15672sudo rabbitmqctl add_user admin StrongPass!sudo rabbitmqctl set_user_tags admin administratorsudo rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"Connection refused 多为端口不对或服务未监听;报 SocketTimeoutException 多为地址/路由不可达或端口未放行flow control initiated 表示内存/磁盘告警或生产过快rabbitmqctl status | egrep 'mem_used|disk_free'三 客户端与服务端配置要点
factory.setRequestedHeartbeat(60);factory.setAutomaticRecoveryEnabled(true);四 一键排查命令清单
sudo systemctl status rabbitmq-serverss -lntp | egrep ':(5672|15672|25672)'sudo rabbitmq-plugins list | grep managementnc -vz 127.0.0.1 5672 && nc -vz 127.0.0.1 15672nc -vz <IP> 5672 与 nc -vz <IP> 15672sudo tail -n200 /var/log/rabbitmq/rabbit@*.log | grep -i "error\|warning\|connection_closed\|missed heartbeats\|flow control"rabbitmqctl status | egrep 'mem_used|disk_free'rabbitmq-diagnostics check_port_connectivityrabbitmq-diagnostics list_connections(查看当前连接与心跳)五 典型报错对照与处理
| 现象/报错 | 可能原因 | 处理要点 |
|---|---|---|
NoRouteToHostException / SocketTimeoutException(连接超时) |
地址/路由错误、端口未放行、安全组/防火墙阻断 | 核对 IP/端口,放行 5672/15672,检查云安全组与本地防火墙 |
Connection refused |
服务未监听该端口、端口不对、插件未启用 | 确认监听 ss -lntp,启用管理插件 rabbitmq-plugins enable rabbitmq_management |
ACCESS_REFUSED - Login was refused |
用户名/密码错误、权限不足 | 创建远程用户并赋权,或重置密码 |
NOT_ALLOWED - vhost xxx not found |
vhost 未创建或名称错误 | 创建 vhost 并在连接串中正确使用 |
ShutdownSignalException / missed heartbeats |
心跳超时、网络不稳定、LB 空闲超时 | 设置心跳 60s、启用自动重连,调小 TCP keepalive 或调整 LB 空闲超时 |
| 管理界面可访问但客户端连不通 | 客户端连 5672 被拒或账号限制 | 放行 5672,使用具备远程权限的账户与正确 vhost |
| 队列阻塞/发布超时 | 内存/磁盘告警触发流控、消费者过慢 | 扩容资源、优化消费、必要时降低发布速率或调整队列参数 |