使用systemctl
命令確認RabbitMQ服務是否正在運行:
sudo systemctl status rabbitmq-server
若服務未啟動,執行sudo systemctl start rabbitmq-server
啟動;若啟動失敗,需進一步查看日志(參考“日志分析”部分)。
RabbitMQ默認使用5672(AMQP)、**15672(管理界面)**端口,確保端口處于監聽狀態且網絡可達:
sudo ss -tulnp | grep -E '5672|15672'
(正常應顯示LISTEN
狀態);telnet <服務器IP> 5672
(或使用nc -zv <服務器IP> 5672
),若連接失敗,需檢查防火墻(如ufw
)是否放行端口:sudo ufw allow 5672/tcp
。RabbitMQ主配置文件為/etc/rabbitmq/rabbitmq.conf
(Ubuntu默認路徑),備份后用文本編輯器檢查語法(如縮進、參數格式),重點關注:
listeners.tcp.default = 0.0.0.0
允許所有IP連接,或指定IP);log.default.level = info
,調試時可設為debug
);vm_memory_high_watermark.relative = 0.6
,即內存使用達60%觸發流控)。RabbitMQ日志默認存儲在/var/log/rabbitmq/
目錄,文件名為rabbit@<主機名>.log
(如rabbit@ubuntu-server.log
)。常用查看命令:
sudo tail -f /var/log/rabbitmq/rabbit@$(hostname).log
;sudo grep -i "error\|warning" /var/log/rabbitmq/rabbit@$(hostname).log
。connection refused
,通常因服務未啟動、端口被防火墻攔截或Erlang節點無法連接(需檢查epmd
端口4369
);access_refused
錯誤(如guest
用戶無法遠程登錄),需修改用戶權限或創建新用戶(參考“用戶與權限”部分);disk_free_limit
警告,需清理日志、備份文件或擴容磁盤(設置disk_free_limit.absolute = 2GB
);memory alarm
錯誤,需調整內存閾值(vm_memory_high_watermark
)或優化消息大?。ㄈ鐗嚎s消息)。RabbitMQ內存使用過高會觸發流控(flow control
),導致生產者阻塞。通過以下命令查看內存狀態:
sudo rabbitmqctl status | grep -E "mem_used|mem_limit"
mem_used
接近mem_limit
(默認內存閾值為系統內存的40%),需調整配置(vm_memory_high_watermark.relative = 0.7
)或啟用惰性隊列(lazy_queues
)減少內存占用。磁盤空間不足會導致RabbitMQ無法寫入消息。使用df
命令檢查磁盤剩余空間:
df -h /var/lib/rabbitmq/
(數據目錄)
disk_free
小于disk_free_limit
(默認50MB),需清理舊數據(如刪除超過7天的日志:find /var/log/rabbitmq/ -name "*.log" -mtime +7 -delete
)或擴容磁盤。sudo rabbitmqctl list_connections
(關注connected_at
時間,長時間閑置的連接需關閉);sudo rabbitmqctl list_queues name consumers
(consumers=0
表示無消費者,需檢查消費者服務是否宕機)。若隊列中messages_ready
持續增長(通過sudo rabbitmqctl list_queues name messages_ready
查看),需:
x-message-ttl
參數,自動過期舊消息)或啟用惰性隊列(x-queue-mode=lazy
,將消息存儲到磁盤)。若節點無法加入集群(join_cluster
失?。?,需檢查:
/var/lib/rabbitmq/.erlang.cookie
文件內容必須相同,權限為400
);/etc/hosts
文件中需包含集群節點的主機名與IP映射);4369
用于Erlang節點發現,25672
用于集群通信,需放行)。若管理界面無法訪問(http://<服務器IP>:15672
),需檢查管理插件是否啟用:
sudo rabbitmq-plugins list
(查看rabbitmq_management
是否在列表中);
啟用插件:sudo rabbitmq-plugins enable rabbitmq_management
;
重啟服務:sudo systemctl restart rabbitmq-server
。
sudo rabbitmqctl status
(顯示節點名稱、運行狀態、內存/磁盤使用等信息);sudo rabbitmqctl list_queues name messages_ready messages_unacknowledged
(查看隊列名稱、就緒消息數、未確認消息數);sudo rabbitmqctl list_connections peer_address port state
(查看客戶端IP、端口、連接狀態);sudo rabbitmqctl force_reset
(用于解決無法啟動或集群異常問題)。/var/lib/rabbitmq/mnesia
目錄)和配置文件(/etc/rabbitmq/
),可使用rsync
或tar
命令;