首先确认RabbitMQ服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status rabbitmq-server
若服务未运行,启动服务:
sudo systemctl start rabbitmq-server
若启动失败,需结合日志进一步分析(参考日志分析部分)。
RabbitMQ的日志文件位于/var/log/rabbitmq/目录下,文件名为rabbit@<hostname>.log(<hostname>为主机名)。使用以下命令实时查看最新日志:
sudo tail -f /var/log/rabbitmq/rabbit@$(hostname).log
日志中会记录启动失败、连接异常、资源不足等关键错误信息,是故障排查的重要依据。
RabbitMQ默认使用5672(AMQP协议,客户端通信)和15672(HTTP协议,管理界面)端口。若端口被占用或网络不通,会导致连接失败。
使用以下命令查看端口监听情况:
sudo ss -tulnp | grep -E '5672|15672'
若端口被占用,可通过kill -9 <PID>终止占用进程,或修改RabbitMQ配置文件(/etc/rabbitmq/rabbitmq.conf)中的listeners.tcp.default参数更换端口。
在客户端机器上使用ping命令测试与RabbitMQ服务器的网络连接:
ping <RabbitMQ服务器IP>
使用telnet命令测试端口是否可达:
telnet <RabbitMQ服务器IP> 5672
若无法连通,需检查防火墙(Ubuntu默认使用ufw)或云服务器安全组规则,开放对应端口:
sudo ufw allow 5672/tcp # 开放5672端口
sudo ufw allow 15672/tcp # 开放15672端口
sudo ufw reload # 重新加载防火墙规则
RabbitMQ的主要配置文件为/etc/rabbitmq/rabbitmq.conf(RabbitMQ 3.7+版本)和/etc/rabbitmq/rabbitmq-env.conf(环境变量配置)。常见配置错误包括:
修改配置文件后,需重启RabbitMQ服务使配置生效:
sudo systemctl restart rabbitmq-server
RabbitMQ对内存、磁盘空间有最低要求,资源不足会导致服务异常。
使用以下命令查看系统内存使用情况:
free -h
通过RabbitMQ管理命令查看内存使用详情:
sudo rabbitmqctl status | grep -E "mem_used|mem_limit"
若内存使用超过阈值(默认vm_memory_high_watermark为0.4,即40%),需调整阈值或扩容内存:
sudo rabbitmqctl set_vm_memory_high_watermark 0.6 # 调整为60%
使用以下命令查看磁盘空间使用情况:
df -h /var/lib/rabbitmq # RabbitMQ数据目录
若磁盘空间不足(默认disk_free_limit为50MB),需清理日志、备份文件或扩容磁盘:
sudo rabbitmqctl set_disk_free_limit 2GB # 调整为2GB
若客户端连接RabbitMQ时出现Connection timed out错误,需检查:
若主机名修改后未在/etc/hosts文件中解析,需添加映射(如127.0.0.1 <hostname>),并重启RabbitMQ服务。
若连接频繁断开,需检查:
若RabbitMQ以集群模式部署,常见故障为节点无法加入集群,需检查:
/var/lib/rabbitmq/.erlang.cookie)内容是否一致(所有节点需相同);sudo rabbitmqctl cluster_status查看集群状态)。若队列中消息积压严重(messages_ready值持续增长),需检查:
rabbitmqctl set_policy设置队列长度限制)。若消费者未收到消息,需检查:
durable=true,消息发布时delivery_mode=2);auto_ack=false,处理完成后手动ack);