更新処理のエラー

症状

Edge UI または Edge 管理 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 = []}
    

考えられる原因

このエラーにはさまざまな原因が考えられます。たとえば、次のような原因が考えられます。

原因 詳細 対象
メモリ不足 Message Processor の Java ヒープ領域が不足し、API プロキシのデプロイに失敗します。 Private Cloud ユーザー
API プロキシ バンドルのエラー API プロキシ バンドルにエラーがあり、API プロキシのデプロイに失敗している可能性があります。 Private ユーザーと Public Cloud ユーザー

最初に試す手順

  1. Message Processor のログ /opt/apigee/var/log/apigee/edge-message-processor/logs/system.log で、配備エラーまたは例外スタック トレースが発生しているかどうか確認します。
  2. 通常、スタック トレースには、配備エラーの原因に関する情報が含まれています。スタック トレースを詳しく分析し、原因を特定してください。

メモリ不足

診断

注: 次の手順を実施できるのは Edge for Private Cloud ユーザーのみです。Edge Public Cloud を使用している場合は、Apigee サポートにお問い合わせください。

  1. Message Processor ログ /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] というメッセージは、Message Processor の Java ヒープ領域が不足していることを意味します。

解決策

注: 次の手順を実施できるのは Edge for Private Cloud ユーザーのみです。Edge Public Cloud を使用している場合は、Apigee サポートにお問い合わせください。

Message Processor で、Java ヒープ領域の最大値を増やします。

Java ヒープ領域の最大値は、JVM プロパティ -Xmx で制御されます。次の手順に従って、Message Processor の 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. 上記の情報に基づいて、Message Processor の java ヒープ領域で増やすメモリ量を決めます。
      3. たとえば、Message Processor の現在の最大ヒープ領域が 1,024 MB、MemTotal が 8 GB(8,192 MB)、MemFree が 5 GB(5,120 MB)の場合、Java ヒープ領域の最大値を 3 GB(3,072 MB)に増やすことができます。
      4. Java ヒープ領域の増分を決める際にヘルプが必要な場合は、Apigee サポートにご連絡ください。
  2. 次のファイルが存在しない場合は作成します。
        /opt/apigee/customer/application/message-processor.properties
        
  3. ファイルに次の行を追加し、ヒープ領域の設定値を増やします(例: 3072M)。
        bin_setenv_max_mem=3072m
        
  4. ファイルを保存します。
  5. Message Processor を再起動します。
        /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
        
  6. 複数の Message Processor を使用している場合、すべての Message Processor で手順 3 から 6 を繰り返します。

問題が解決しない場合は、Apigee サポートにご連絡ください。.

API プロキシ バンドルのエラー

API プロキシで使用されるポリシーにエラーがある場合、デプロイに失敗して "Unexpected error occurred while processing the updates" エラーが発生します。

たとえば、このコミュニティ投稿をご覧ください。

診断

注: 次の手順を実施できるのは Edge for Private Cloud ユーザーのみです。Edge Public Cloud を使用している場合は、Apigee サポートにお問い合わせください。

  1. Message Processor のログで、API プロキシのデプロイに関連する例外またはエラーが発生しているかどうか確認します。エラー メッセージを見ると、問題を解決するために API プロキシ バンドルに必要な変更を確認できます。
  2. Message Processor のログにエラー メッセージが記録されていない場合は、API プロキシのリビジョン履歴で差分情報を確認します。古いリビジョンが問題なくデプロイされている場合は、どのようなコード変更が行われたのかを確認します。

解決策

  1. API プロキシ バンドルで、問題の解決に必要な変更を行います。
  2. デプロイで問題が発生した API プロキシの変更を元に戻します。

問題が解決しない場合は、Apigee サポートにお問い合わせください。