处理更新时出错

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

问题

通过 Edge 界面或 Edge Management API 调用部署 API 代理修订版本失败, 错误“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 代理 失败。 Private Cloud 用户
API 代理软件包出错 API 代理软件包存在可能会导致 API 代理部署失败的错误。 私有云和公有云用户

先尝试的常用步骤

  1. 检查消息处理器中是否存在任何部署错误或异常堆栈轨迹 日志 /opt/apigee/var/log/apigee/edge-message-processor/logs/system.log
  2. 您通常会看到一个堆栈轨迹,其中提供了部署原因的相关信息 错误。请仔细阅读堆栈轨迹,了解原因。

内存不足

诊断

注意:只有 Edge Private Cloud 用户可以执行以下步骤。如果您 位于 Edge 公有云上,请与 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 公有云上,请与 Apigee 支持联系。

增加消息处理器上的最大 Java 堆空间。

最大 Java 堆空间由 JVM 属性 -Xmx 控制。具体步骤如下 增加消息处理器上的 Java 堆空间:

  1. 确定可以增加 Java 堆空间的内存量: <ph type="x-smartling-placeholder">
      </ph>
    1. 检查文件中针对最大堆空间 max_mem 设置的当前值 /opt/apigee/edge-message-processor/bin/setenv.sh
    2. 获取 MemTotal(可用 RAM 总量)、MemFree (系统上未使用的物理 RAM 容量)使用 /proc/meminfo 命令。
      1. 请确保以上信息包含任何其他进程消耗的内存 例如边缘路由器等
      2. 根据上述信息,确定可能的 Java 堆空间大小 消息处理器的使用量提高了。
      3. 例如,消息处理器上的当前最大堆空间为 1024MB, MemTotal 为 8GB (8192MB),MemFree 为 5GB (5120MB),那么您可以提高 Java 的 堆空间增加到 3GB (3072MB)。
      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 代理软件包出错

如果 API 代理中使用的任何政策存在任何错误,则部署将 失败并显示错误“Unexpected error occurred while processing the updates”。

有关示例,请参阅此 社区帖子。

诊断

注意:只有 Edge Private Cloud 用户可以执行以下步骤。如果您 位于 Edge 公有云上,请与 Apigee 支持联系。

  1. 检查消息处理器日志中是否存在与 API 代理相关的异常或错误 部署。通过错误消息,您可以了解应在 API 代理中进行哪些更改 解决问题
  2. 如果消息处理器日志中未显示任何错误消息,请检查修订版本中的差异 API 代理历史记录。如果较旧的修订版本可以顺利部署,请检查 更改。

分辨率

  1. 请在 API 代理软件包中进行必要的更改,以解决此问题。
  2. 还原对 API 代理所做的任何导致部署问题的代码更改。

如果问题仍然存在,请与 Apigee 支持团队联系以获取 进一步协助。