

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對 Amazon MQ 上的 ActiveMQ 進行故障診斷 Amazon MQ
<a name="troubleshooting-activemq"></a>

使用本節中的資訊來協助您診斷和解決在 Amazon MQ 代理程式上使用 ActiveMQ 時可能遇到的常見問題。

**Contents**
+ [即使我已啟用記錄功能，我也無法在 CloudWatch Logs 中看到代理程式的一般或稽核日誌。](#issues-cw-logging-activemq)
+ [代理程式重新啟動或維護時段之後，即使狀態為 `RUNNING`，我仍然無法連線到代理程式。為什麼？](#issues-connection-after-restart)
+ [我看到我的一些用戶端連線到代理程式，而其他用戶端無法連線。](#issues-connection-limit)
+ [我在執行操作時，在 ActiveMQ 主控台上看到例外狀況 `org.apache.jasper.JasperException: An exception occurred processing JSP page`。](#issues-jsp-exception)

## 即使我已啟用記錄功能，我也無法在 CloudWatch Logs 中看到代理程式的一般或稽核日誌。
<a name="issues-cw-logging-activemq"></a>

 如果您無法在 CloudWatch Logs 中檢視代理程式的日誌，請執行下列動作。

1. 檢查建立或重新啟動代理程式的使用者是否具有 `logs:CreateLogGroup` 許可。在使用者建立或重新啟動代理程式之前，如果您未將 `CreateLogGroup` 許可新增至使用者，則 Amazon MQ 不會建立日誌群組。

1. 檢查您是否已設定以資源為基礎的政策，以允許 Amazon MQ 將日誌發佈到 CloudWatch Logs。若要允許 Amazon MQ 將日誌發佈到 CloudWatch Logs 日誌群組，請設定資源型政策，提供 Amazon MQ 存取以下 CloudWatch Logs API 動作的權限：
   +  [https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogStream.html](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogStream.html) – 為指定的日誌群組建立 CloudWatch Logs 日誌串流。
   +  [https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html) – 將事件傳送到指定的 CloudWatch Logs 日誌串流。

 如需在 Amazon MQ 上設定 ActiveMQ 以將日誌發佈至 CloudWatch Logs 的詳細資訊，請參閱[設定記錄](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/configure-logging-monitoring-activemq.html)。

## 代理程式重新啟動或維護時段之後，即使狀態為 `RUNNING`，我仍然無法連線到代理程式。為什麼？
<a name="issues-connection-after-restart"></a>

 在您初始化代理程式重新啟動後、排定的維護時段完成後、或者在啟動待命執行個體的失敗事件中，您可能會遇到連線問題。在任何一種情況下，代理程式重新啟動後的連線問題很可能是因為代理程式的 Amazon EFS 或 Amazon EBS 儲存磁碟區中存在異常大量的訊息所造成。在重新啟動期間，Amazon MQ 會將持續性訊息從儲存區移至代理程式記憶體。若要確認此診斷，可以在 CloudWatch 上監控您的 Amazon MQ for ActiveMQ 代理程式的下列指標：
+  **`StoragePercentUsage`** — 大百分比或接近 100% 可能會導致代理程式拒絕連線。
+  **`JournalFilesForFullRecovery`** - 指出在非正常關機並重新啟動後將重播的日誌檔案數量。增加或持續高於 1 的值表示未解決的交易，可能會在重新啟動後造成連線問題。
+  **`OpenTransactionCount`** - 重新啟動後的數字大於零，表示代理程式將嘗試存放先前使用的訊息，從而導致連線問題。

 若要解決此問題，我們建議您使用 `rollback()` 或 `commit()`，解決 XA 交易。如需詳細資訊並查看使用 `rollback()` 解決 XA 交易的程式碼範例，請參閱[復原 XA 交易](best-practices-activemq.md#recover-xa-transactions)。

## 我看到我的一些用戶端連線到代理程式，而其他用戶端無法連線。
<a name="issues-connection-limit"></a>

 如果您的代理程式處於 `RUNNING` 狀態，而有些用戶端可以成功連線到代理程式，而有些用戶端則無法連線，您可能已經達到代理程式的[線路層級連線](amazon-mq-limits.md#broker-limits)限制。若要確認您已達到線路層級連線限制，請執行下列動作：
+  在 CloudWatch Logs 中檢查 Amazon MQ 代理程式上 ActiveMQ *的一般*代理程式日誌。 Amazon MQ 如果已達到限制，您將在代理程式日誌中看到 `Reached Maximum Connections`。如需 Amazon MQ 代理程式上 ActiveMQ 的 CloudWatch Logs 詳細資訊，請參閱 [了解 CloudWatch Logs 中的記錄結構](configure-logging-monitoring-activemq.md#security-logging-monitoring-configure-cloudwatch-structure)。

達到線路層級連線限制後，代理程式將主動拒絕額外的連入連線。若要解決此問題，我們建議升級代理程式執行個體類型。如需有關選擇工作負載之最佳執行個體類型的詳細資訊，請參閱[Broker instance types](broker-instance-types.md)。

 如果您已確認線路層級連線數目小於代理程式連線限制，則問題可能與重新啟動用戶端有關。檢查您的代理程式日誌是否有大量和頻繁的 `... Inactive for longer than 600000 ms - removing ...` 條目。日誌項目表示重新啟動用戶端或連線問題。當用戶端透過 Network Load Balancer (NLB) 與經常中斷連線並重新連線至代理程式的用戶端連線至代理程式時，此效果會更明顯。這在以容器為基礎的用戶端中更為常見。

 檢查您的用戶端日誌以取得進一步的詳細資訊。代理程式將在 600000 毫秒後清理非活動的 TCP 連接，並釋放連線通訊端。

## 我在執行操作時，在 ActiveMQ 主控台上看到例外狀況 `org.apache.jasper.JasperException: An exception occurred processing JSP page`。
<a name="issues-jsp-exception"></a>

 如果您正在使用簡單身分驗證並設定佇列的 `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 整合的運作方式](security-authentication-authorization.md#ldap-support-details)。