處理更新時發生錯誤

您正在查看 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. 檢查 /opt/apigee/edge-message-processor/bin/setenv.sh 檔案中目前針對堆積空間上限 (max_mem) 設定的值
    2. 透過系統的 /proc/meminfo 指令取得 MemTotal (可用 RAM 總量)、MemFree (系統未使用的實體 RAM 數量)。
      1. 確認上述資訊包含相同系統中任何其他程序 (例如 Edge Router 等) 耗用的記憶體。
      2. 根據上述資訊,判斷訊息處理器的 Java 堆積空間可增加多少。
      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. 如果您使用多個訊息處理器,請在所有訊息處理器上重複執行步驟 3 至 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 支援團隊聯絡,尋求進一步協助。