本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
故障診斷:Amazon MQ for ActiveMQ
請使用此節中的資訊,協助診斷及解決在使用 Amazon MQ for ActiveMQ 代理程式時可能遇到的常見問題。
內容
即使我已啟動記錄,我也看不到 Lo CloudWatch gs 中代理程式的一般記錄或稽核記錄。
如果您無法在 Logs 中檢視代理程式的 CloudWatch 記錄檔,請執行下列動作。
-
檢查建立或重新啟動代理程式的使用者是否具有
logs:CreateLogGroup
許可。在使用者建立或重新啟動代理程式之前,如果您未將CreateLogGroup
許可新增至使用者,則 Amazon MQ 不會建立日誌群組。 -
檢查您是否已設定以資源為基礎的政策,以允許 Amazon MQ 將日誌發佈到 CloudWatch 日誌。若要允許 Amazon MQ 將日誌發佈到日誌 CloudWatch 日誌群組,請設定以資源為基礎的政策,讓 Amazon MQ 存取下列 CloudWatch 日誌動作:API
-
CreateLogStream
— 為指定的 CloudWatch 記錄群組建立防護記錄資料流。 -
PutLogEvents
— 將事件傳遞至指定的 CloudWatch 記錄檔記錄串流。
-
如需設定適用於 ActiveMQ 的 Amazon MQ 以將日誌發佈到日誌的詳細資訊,請參閱設定 CloudWatch 記錄。
代理程式重新啟動或維護時段之後,即使狀態為 RUNNING
,我仍然無法連線到代理程式。為什麼?
在您初始化代理程式重新啟動後、排定的維護時段完成後、或者在啟動待命執行個體的失敗事件中,您可能會遇到連線問題。在任何一種情況下,代理程式重新啟動後的連線問題很可能是由於代理程式的 Amazon EFS 或 Amazon EBS 儲存磁碟區中存在異常大量訊息所造成。在重新啟動期間,Amazon MQ 會將持續性訊息從儲存區移至代理程式記憶體。若要確認此診斷,您可以針對適用於 ActiveMQ 代理程式 CloudWatch 的 Amazon MQ 監控下列指標:
-
StoragePercentUsage
— 大百分比或接近 100% 可能會導致代理程式拒絕連線。 -
JournalFilesForFullRecovery
- 指出在非正常關機並重新啟動後將重播的日誌檔案數量。增加或持續高於 1 的值表示未解決的交易,可能會在重新啟動後造成連線問題。 -
OpenTransactionCount
- 重新啟動後的數字大於零,表示代理程式將嘗試存放先前使用的訊息,從而導致連線問題。
若要解決此問題,我們建議您使用 rollback()
或 commit()
,解決 XA 交易。如需詳細資訊並查看使用 rollback()
解決 XA 交易的程式碼範例,請參閱復原 XA 交易。
我看到我的一些用戶端連線到代理程式,而其他用戶端無法連線。
如果您的代理程式處於 RUNNING
狀態,而有些用戶端可以成功連線到代理程式,而有些用戶端則無法連線,您可能已經達到代理程式的線路層級連線限制。若要確認您已達到線路層級連線限制,請執行下列動作:
-
在日誌中檢查適用於 ActiveMQ 代理程式的 Amazon MQ 的一般代理程式日誌。 CloudWatch 如果已達到限制,您將在代理程式日誌中看到
Reached Maximum Connections
。如需 ActiveMQ 代理程式適用之 Amazon MQ CloudWatch 日誌的詳細資訊,請參閱。了解日誌記 CloudWatch 錄的結構
達到線路層級連線限制後,代理程式將主動拒絕額外的連入連線。若要解決此問題,我們建議升級代理程式執行個體類型。如需有關選擇工作負載之最佳執行個體類型的詳細資訊,請參閱Broker instance types。
如果您已確認線路層級連線數目小於代理程式連線限制,則問題可能與重新啟動用戶端有關。檢查您的代理程式日誌是否有大量和頻繁的 ... Inactive for longer than 600000 ms - removing ...
條目。日誌項目表示重新啟動用戶端或連線問題。當用戶端透過 Network Load Balancer (NLB) 與經常中斷連線並重新連線至代理程式的用戶端連線至代理程式時,此效果會更明顯。這在以容器為基礎的用戶端中更為常見。
檢查您的用戶端日誌以取得進一步的詳細資訊。代理程式會在 600000 ms 之後清理非作用中的連TCP線,並釋放連線套接字。
我在執行操作時,在 ActiveMQ 主控台上看到例外狀況 org.apache.jasper.JasperException: An exception occurred processing JSP page
。
如果您使用簡單驗證和設定AuthorizationPlugin
佇列和主題授權,請務必使用組XML態檔案中的AuthorizationEntries
元素,並允許activemq-webconsole
群組權限存取所有佇列和主題。這可確保 ActiveMQ Web 主控台可以與 ActiveMQ 代理程式進行通訊。
以下 AuthorizationEntry
範例會將所有佇列和主題的讀取和寫入許可授予給 activemq-webconsole
群組。
<authorizationEntries> <authorizationEntry admin="activemq-webconsole,admins,users" topic=">" read="activemq-webconsole,admins,users" write="activemq-webconsole,admins,users" /> <authorizationEntry admin="activemq-webconsole,admins,users" queue=">" read="activemq-webconsole,admins,users" write="activemq-webconsole,admins,users" /> </authorizationEntries>
同樣,將您的經紀人與集成時LDAP,請確保授予該amazonmq-console-admins
組的權限。如需LDAP整合的詳細資訊,請參閱LDAP 整合的運作方式。