Message Processor の I/O タイムアウトを構成する

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

このドキュメントでは、Apigee Edge Message Processor の I/O タイムアウトを構成する方法について説明します。

Message Processor の I/O タイムアウトは、Message Processor がバックエンド サーバーからのレスポンスを受信するまで、またはソケットがバックエンド サーバーにリクエストを書き込む準備が整うまで待機する時間を表します。この時間が経過するとタイムアウトになります。

Message Processor の I/O タイムアウトのデフォルト値は 55 seconds です。このタイムアウト期間は、ターゲット エンドポイント構成と API プロキシの ServiceCallout ポリシーで構成されたバックエンド サーバーに適用されます。

Message Processor の I/O タイムアウトは、必要に応じてデフォルト値の 55 seconds から増減できます。次の場所で構成できます。

  • API プロキシの場合
    • ターゲット エンドポイント
    • ServiceCallout ポリシー
  • Message Processor で処理

次のプロパティは、Message Processor の I/O タイムアウトを制御します。

プロパティ名 ロケーション 説明
io.timeout.millis

API プロキシ:

  • ターゲット エンドポイント
  • Service Callout ポリシー

これは、Message Processor が次の処理を行う最大時間です。

  • 接続を確立してバックエンド サーバーにリクエストを送信した後、バックエンド サーバーからのレスポンスを受信するまで待機します。または、
  • ソケットの準備が完了して Message Processor がバックエンド サーバーにリクエストを送信するまで待機します。

このタイムアウト期間内にバックエンド サーバーからのレスポンスがない場合、Message Processor はタイムアウトします。

デフォルトでは、このプロパティは Message Processor の HTTPTransport.io.timeout.millis プロパティに設定された値を使用します。デフォルト値は 55 seconds です。

このプロパティが特定の API プロキシの新しいタイムアウト値で変更されている場合、その API プロキシのみが影響を受けます。

HTTPTransport.io.timeout.millis Message Processor

これは、Message Processor が次の処理を行う最大時間です。

  • 接続が確立してバックエンド サーバーにリクエストを送信した後、バックエンド サーバーからのレスポンスを受信するまで待機します。または、
  • ソケットの準備が完了して Message Processor がバックエンド サーバーにリクエストを送信するまで待機します。

このタイムアウト期間内にバックエンド サーバーからのレスポンスがない場合、Message Processor はタイムアウトします。

このプロパティは、この Message Processor で実行されているすべての API プロキシで使用されます。

このプロパティのデフォルト値は 55 seconds です。

このプロパティは、Message Processor の I/O タイムアウトを構成するで説明されているように変更することも、API プロキシレベルで io.timeout.millis プロパティを設定してこの値を上書きすることもできます。

始める前に

このドキュメントの手順を行う前に、次のトピックを理解しておいてください。

API プロキシで I/O タイムアウトを構成する

I/O タイムアウトは、次の API プロキシの場所で構成できます。

  • ターゲット エンドポイント
  • ServiceCallout ポリシー

API プロキシのターゲット エンドポイントで I/O タイムアウトを構成する

このセクションでは、API プロキシのターゲット エンドポイントで I/O タイムアウトを構成する方法について説明します。I/O タイムアウトは、I/O タイムアウト値をミリ秒単位で表す io.timeout.millis プロパティを使用して構成できます。

  1. Edge UI で、新しい I/O タイムアウト値を構成する特定の API プロキシを選択します。
  2. 変更する特定のターゲット エンドポイントを選択します。
  3. TargetEndpoint 構成の <HTTPTargetConnection> 要素に、適切な値を持つプロパティ io.timeout.millis を追加します。
  4. たとえば、I/O タイムアウトを 120 秒に変更するには、次のコードブロックを追加します。

        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
    

    io.timeout.millis プロパティはミリ秒単位であるため、120 秒の値は 120000 になります。

    次の例は、API プロキシのターゲット エンドポイント構成で I/O タイムアウトを構成する方法を示しています。

    バックエンド サーバーの URL を使用したターゲット エンドポイントの構成例

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <URL>https://mocktarget.apigee.net/json</URL>
        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
      </HTTPTargetConnection>
    </TargetEndpoint>
    

    ターゲット サーバーを使用したターゲット エンドポイントの構成例

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="target1" />
          <Server name="target2" />
        </LoadBalancer>
        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
    
  5. API プロキシに加えた変更を保存します。

API プロキシの ServiceCallout ポリシーで I/O タイムアウトを構成する

このセクションでは、API プロキシの ServiceCallout ポリシーで I/O タイムアウトを構成する方法について説明します。I/O タイムアウトは、<Timeout> 要素または io.timeout.millis プロパティで構成できます。<Timeout> 要素と io.timeout.millis プロパティはどちらも、I/O タイムアウト値をミリ秒単位で表します。

ServiceCallout ポリシーの I/O タイムアウトは、次のいずれかの方法で構成できます。

  • <Timeout> 要素。
  • io.timeout.millis プロパティ。

タイムアウト要素

<Timeout> 要素を使用して ServiceCallout ポリシーで I/O タイムアウトを構成する手順は次のとおりです。

  1. Edge UI で、ServiceCallout ポリシーの新しい I/O タイムアウト値を構成する特定の API プロキシを選択します。
  2. 変更する特定の ServiceCallout ポリシーを選択します。
  3. <ServiceCallout> 構成の下に、適切な値を持つ要素 <Timeout> を追加します。

    たとえば、I/O タイムアウトを 120 秒に変更するには、次のコード行を追加します。

        <Timeout>120000</Timeout>
    

    <Timeout> 要素はミリ秒単位であるため、120 秒の値は 120000 です。

    次の例は、<Timeout> 要素を使用して ServiceCallout ポリシーで I/O タイムアウトを構成する方法を示しています。

    バックエンド サーバーの URL を使用した ServiceCallout ポリシーの構成例

    <ServiceCallout name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <Timeout>120000</Timeout>
        <HTTPTargetConnection>
            <Properties/>
            <URL>https://mocktarget.apigee.net/json</URL>
        </HTTPTargetConnection>
    </ServiceCallout>
    
  4. API プロキシに加えた変更を保存します。

io.timeout.millis プロパティ

io.timeout.millis プロパティを使用して ServiceCallout ポリシーで I/O タイムアウトを構成する手順は次のとおりです。

  1. Edge UI で、ServiceCallout ポリシーの新しい I/O タイムアウト値を構成する特定の API プロキシを選択します。
  2. 変更する特定の ServiceCallout ポリシーを選択します。
  3. TargetEndpoint 構成の <HTTPTargetConnection> 要素に、適切な値を持つプロパティ io.timeout.millis を追加します。

    たとえば、I/O タイムアウトを 120 秒に変更するには、次のコードブロックを追加します。

        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
    

    io.timeout.millis プロパティはミリ秒単位であるため、120 秒の値は 120000 になります。

    次の例は、API プロキシのターゲット エンドポイント構成で I/O タイムアウトを構成する方法を示しています。

    バックエンド サーバーの URL を使用した ServiceCallout ポリシーの構成例

    <ServiceCallout name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <HTTPTargetConnection>
          <Properties>
            <Property name="io.timeout.millis">120000</Property>
          </Properties>
          <URL>https://mocktarget.apigee.net/json</URL>
        </HTTPTargetConnection>
    </ServiceCallout>
    

    ターゲット サーバーを使用した ServiceCallout ポリシーの構成例

    <ServiceCallout enabled="true" name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <Response>calloutResponse</Response>
        <HTTPTargetConnection>
            <LoadBalancer>
                <Server name="target1" />
                <Server name="target2" />
            </LoadBalancer>
            <Properties>
                <Property name="io.timeout.millis">120000</Property>
            </Properties>
            <Path>/test</Path>
        </HTTPTargetConnection>
    </ServiceCallout>
    
  4. API プロキシに加えた変更を保存します。

Message Processor の I/O タイムアウトを構成する

このセクションでは、Message Processor の I/O タイムアウトを構成する方法について説明します。I/O タイムアウトは HTTPTransport.io.timeout.millis プロパティを使用して構成できます。このプロパティは、Edge の構成方法で説明されている構文に従ってトークンを使用し、Message Processor コンポーネントの I/O タイムアウト値をミリ秒単位で表します。

Message Processor の I/O タイムアウトを構成するには、次の操作を行います。

  1. Message Processor マシンで、次のファイルをエディタで開きます。まだ存在しない場合は作成します。
    /opt/apigee/customer/application/message-processor.properties
    

    たとえば、vi を使用してファイルを開くには、次のコマンドを入力します。

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. プロパティ ファイルに次の形式の行を追加します。TIME_IN_MILLISECONDS は実際の値に置き換えます。
    conf_http_HTTPTransport.io.timeout.millis=TIME_IN_MILLISECONDS
    

    たとえば、Message Processor の I/O タイムアウトを 120 秒に変更するには、次の行を追加します。

    conf_http_HTTPTransport.io.timeout.millis=120000
    
  3. 変更を保存します。
  4. 次のように、プロパティ ファイルの所有者を apigee ユーザーにします。
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 次のように Message Processor を再起動します。
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 複数の Message Processor がある場合は、すべての Message Processor で上記の手順を繰り返します。

Message Processor の I/O タイムアウトを確認する

このセクションでは、Message Processor で I/O タイムアウトが正しく変更されていることを確認する方法について説明します。

トークン conf_http_HTTPTransport.io.timeout.millis を使用して Message Processor で I/O タイムアウトを設定する場合でも、実際のプロパティ HTTPTransport.io.timeout.millis が新しい値で設定されていることを確認する必要があります。

  1. Message Processor マシンで、/opt/apigee/edge-message-processor/conf ディレクトリのプロパティ HTTPTransport.io.timeout.millis を検索し、次のように新しい値が設定されていることを確認します。
    grep -ri "HTTPTransport.io.timeout.millis" /opt/apigee/edge-message-processor/conf
    
  2. Message Processor で新しい I/O タイムアウト値が正常に設定されると、上記のコマンドによって http.properties ファイルに新しい値が表示されます。
  3. I/O タイムアウトを 120 秒に構成した後の上記のコマンドのサンプル結果は次のとおりです。

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPTransport.io.timeout.millis=120000
    

    上記の出力例では、プロパティ HTTPTransport.io.timeout.millishttp.properties の新しい値 120000 で設定されています。これは、Message Processor で I/O タイムアウトが 120 秒に正常に構成されていることを示します。

  4. プロパティ HTTPTransport.io.timeout.millis に古い値が引き続き表示される場合は、Message Processor の I/O タイムアウトの構成に記載されているすべての手順が正しく行われていることを確認します。失敗した手順がある場合は、すべての手順を正しくやり直してください。
  5. それでも I/O タイムアウトを変更できない場合は、Apigee Edge サポートにお問い合わせください。

次のステップ

Router の I/O タイムアウトの構成の詳細