處理更新時發生錯誤

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

問題

透過 Edge UI 或 Edge Management API 呼叫部署 API Proxy 修訂版本會失敗,且 「Unexpected error occurred while processing the updates」錯誤。

錯誤訊息

Error in deployment for environment sit.

The revision is deployed and traffic can flow, but flow may be impared. com.apigee.kernel.exceptions.spi.UncheckedException{ code = messaging.runtime.UpdateFailed, message = Unexpected error occurred while processing the updates, associated contexts = []}

可能原因

導致這個錯誤的原因有很多。以下列舉幾個原因:

原因 詳細資料 關於
記憶體不足 訊息處理器耗盡 Java 堆積空間,導致 API Proxy 部署作業 失敗。 私有雲使用者
API Proxy 套件發生錯誤 API Proxy 套裝組合發生錯誤,可能導致 API Proxy 部署失敗。 私人與公有雲使用者

建議先嘗試的常見步驟

  1. 查看訊息處理器中是否有任何部署錯誤或例外狀況堆疊追蹤 記錄 /opt/apigee/var/log/apigee/edge-message-processor/logs/system.log敬上
  2. 通常會顯示堆疊追蹤,提供部署原因的相關資訊 錯誤。請詳閱堆疊追蹤,瞭解原因。

記憶體不足

診斷

注意:只有 Edge Private Cloud 使用者可以執行下列步驟。如果發生以下情況: 已在 Edge Public Cloud 中,請與 Apigee 支援團隊聯絡。

  1. 您可能會在「訊息處理者」記錄中看到類似例外狀況 /opt/apigee/var/log/apigee/edge-message-processor/logs/system.log,如 如下圖所示:
    Apigee-Main-4 ERROR BOOTSTRAP - RuntimeConfigurationServiceImpl.dispatchToListeners() : RuntimeConfigurationServiceImpl.dispatchToListeners : Error occurred while dispatching the request DeployEvent{organization=myorg', application='person-credentials-api', applicationRevision='275', deploymentSpec=basepath=/;env=dev;, deploymentID=null} to com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener@5db88cb8
    com.apigee.kernel.exceptions.spi.UncheckedException: Unexpected error occurred while processing the updates
            at com.apigee.entities.AbstractConfigurator.throwUncheckedException(AbstractConfigurator.java:280) ~[config-entities-1.0.0.jar:na]
            at com.apigee.messaging.configuration.MessageProcessorServiceImpl.configure(MessageProcessorServiceImpl.java:665) ~[message-processor-1.0.0.jar:na]
            at com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener.configureMessageProcessorService(MessageProcessorBootstrapListener.java:54) ~[application-bootstrap-1.0.0.jar:na]
            at com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener.deploy(MessageProcessorBootstrapListener.java:29) ~[application-bootstrap-1.0.0.jar:na]
            …<snipped>
            at com.apigee.application.bootstrap.proto.RuntimeConfig_ConfigRPCService_BlockingSkeleton$1.run(RuntimeConfig_ConfigRPCService_BlockingSkeleton.java:38) [application-bootstrap-1.0.0.jar:na]
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_75]
            at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_75]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_75]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_75]
            at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]
    Caused by: java.lang.OutOfMemoryError: Java heap space
  2. 訊息「Caused by: java.lang.OutofMemoryError: Java Heap Space」 表示訊息處理器已用盡 Java 堆積空間。

解析度

注意:只有 Edge Private Cloud 使用者可以執行下列步驟。如果發生以下情況: 已在 Edge Public Cloud 中,請與 Apigee 支援聯絡。

增加訊息處理器上的 Java 堆積空間上限。

最大 Java 堆積空間是由 JVM 屬性 -Xmx 控制。設定步驟如下 增加訊息處理器上的 Java 堆積空間:

  1. 決定 Java 堆積空間可增加的記憶體量:
    1. 查看檔案中目前設定的堆積空間上限值 (max_mem) /opt/apigee/edge-message-processor/bin/setenv.sh
    2. 取得 MemTotal (可用 RAM 總量)、MemFree 使用 (系統未使用的實體 RAM 容量) /proc/meminfo 指令。
      1. 確認以上資訊包含任何其他程序耗用的記憶體 例如同一系統上的 Edge Router 等
      2. 根據上述資訊,判斷 Java 堆積空間可達到多少 提升了 Message Processor 的相容性
      3. 舉例來說,訊息處理器目前的堆積空間上限為 1024 MB MemTotal 為 8 GB (8192 MB)、MemFree 為 5 GB (5120 MB),您就可以提高 Java 上限 將堆積空間變更為 3 GB (3072 MB)。
      4. 如果需要協助來判斷要增加多少 Java 堆積空間 請與 Apigee 支援團隊聯絡。
  2. 若沒有下列檔案,請建立該檔案:
    /opt/apigee/customer/application/message-processor.properties
  3. 在檔案中加入下列這一行,同時增加堆積設定 (例如 3072M):
    bin_setenv_max_mem=3072m
  4. 儲存檔案。
  5. 重新啟動訊息處理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. 如果您有多部訊息處理器,請在所有 訊息處理器。

如果問題仍未解決,請與 Apigee 聯絡 支援.

API Proxy 組合發生錯誤

如果 API Proxy 使用的任何政策有誤,部署作業將 失敗,並發生「Unexpected error occurred while processing the updates」錯誤。

例如,請參閱 社群貼文。

診斷

注意:只有 Edge Private Cloud 使用者可以執行下列步驟。如果發生以下情況: 已在 Edge Public Cloud 中,請與 Apigee 支援聯絡。

  1. 查看訊息處理器記錄,找出與 API Proxy 相關的例外狀況或錯誤 可能面臨擴充性、監控、持續整合 和部署等方面的挑戰這則錯誤訊息會顯示應在 API Proxy 中變更的資訊 以解決問題。
  2. 如果「訊息處理器」記錄檔未顯示錯誤訊息,請檢查修訂版本差異 以及 API Proxy 的記錄如果較舊的修訂版本順利部署,請檢查哪些程式碼 已經過變更。

解析度

  1. 在 API Proxy 套件中進行必要變更,解決問題。
  2. 將對部署作業造成問題的所有 API Proxy 程式碼變更還原。

如果問題持續發生,請與 Apigee 支援團隊聯絡, 以便獲得進一步協助