Skip to main content

🧣 日誌分析與故障排除

本章節整理 ActiveMQ 日常維運中最常見的故障現象與排查路徑。從日誌位置到典型錯誤訊息,幫助你在 Broker 異常時快速定位根因。若需出事前的預防性告警策略,請先參閱 proactiveAlerting

環境

  • windows10 ~ 11 (win64)
  • ActiveMQ 5.16.6
  • 日誌位置: ${ACTIVEMQ_HOME}/data/activemq.log

1. 日誌檔案位置

檔案內容
data/activemq.logBroker 主要運行日誌
data/audit.log安全審計日誌(若啟用)
conf/log4j2.properties日誌等級設定

調高日誌等級:

# conf/log4j2.properties
logger.activemq.name=org.apache.activemq
logger.activemq.level=DEBUG

2. 故障診斷流程

3. 常見錯誤訊息對照

日誌關鍵字含義處理方式
IOException: Transport scheme NOT recognized連線 URI 格式錯誤檢查 tcp:// 前綴
SecurityException認證或授權失敗參見 security
ResourceAllocationException記憶體或 store 已滿參見 flowControl
Slow consumer消費者處理太慢調高 Consumer 數或優化邏輯
Failed to load: lockKahaDB lock 被佔用確認無重複 Broker 實例
javax.jms.IllegalStateException: The Session is closed連線已斷開仍操作加入重連機制

4. 典型場景排查

4.1 訊息堆積不消費

  1. Web Console 確認 ConsumerCount 是否為 0
  2. 檢查 Consumer 應用是否運行、連線 URI 是否正確
  3. 檢查認證帳密與 authorization 權限
  4. 確認 destination 名稱大小寫一致

4.2 Producer 發送阻塞

  1. 檢查 MemoryPercentUsageStorePercentUsage
  2. 確認 producerFlowControl 是否啟用
  3. 加快 Consumer 或增大 systemUsage 限制

4.3 Broker 啟動失敗

  1. 檢查 JDK 版本相容性
  2. 確認 61616 / 8161 port 未被佔用
  3. 檢查 KahaDB lock 與資料目錄權限

4.4 訊息無限重送

  1. 確認 Consumer 的 ACK 模式
  2. 檢查 maximumRedeliveries 設定
  3. 確認 DLQ 策略已啟用

5. 與其他文章的關聯