設定訊息處理工具的持續運作逾時

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

本文說明如何為 Apigee Edge 訊息處理器設定連線逾時時間。

訊息處理器的連線保持有效逾時時間,可讓單一 TCP 連線從/向後端伺服器傳送及接收多個 HTTP 要求/回應,不必為每個要求/回應配對開啟新連線。

訊息處理器的 keep alive 逾時屬性預設值為 60 秒。這個逾時時間適用於目標端點設定中設定的後端伺服器,以及 API Proxy 的 ServiceCallout 政策。

您可以視需要,將 Message Processor 的連線存續逾時時間從預設值 60 秒調高或調低。設定方式如下:

  • 在 API Proxy 中
    • 在目標端點中
    • ServiceCallout 政策中
  • 在訊息處理器上

下列屬性可控制訊息處理器的連線逾時時間:

屬性名稱 位置 說明
keepalive.timeout.millis API Proxy:
  • 目標端點
  • ServiceCallout 項政策

這是訊息處理器允許單一 TCP 連線傳送及接收多個 HTTP 要求/回應的閒置時間上限,而非為每個要求/回應配對開啟新的連線。

根據預設,這個屬性會採用在 訊息處理器 上為 HTTPClient.keepalive.timeout.millis 屬性設定的值,預設值為 60 秒。

如果使用目標端點或特定 API Proxy 中的 ServiceCallout 政策,為目標伺服器修改這項屬性,則只有該目標伺服器的連線存留時間會受到影響。

HTTPClient.keepalive.timeout.millis 訊息處理器

這是訊息處理器允許單一 TCP 連線傳送及接收多個 HTTP 要求/回應的閒置時間上限,而非為每個要求/回應配對開啟新連線。

這個屬性會用於在這個訊息處理器上執行的所有 API Proxy。

此屬性的預設值為 60 秒。

您可以按照下方的「在訊息處理器上設定連線存留逾時」說明修改這項屬性,也可以在 API Proxy 層級設定 keepalive.timeout.millis 屬性,覆寫這個值。

事前準備

使用本文中的步驟前,請務必瞭解下列主題:

在 API Proxy 中設定保持連線逾時

您可以在 API Proxy 的下列位置設定連線存續逾時:

  • 目標端點
  • ServiceCallout 項政策

在 API Proxy 的目標端點中設定連線逾時

本節說明如何在 API Proxy 的目標端點中設定連線存留逾時。您可以透過 keepalive.timeout.millis 屬性設定連線存續逾時,這個屬性代表連線存續逾時值 (以毫秒為單位)。

  1. 在 Edge 使用者介面中,選取要設定新連線存留逾時值的特定 API Proxy。
  2. 選取要修改的特定目標端點。
  3. TargetEndpoint 設定的 <HTTPTargetConnection> 元素下方,新增 keepalive.timeout.millis 屬性並提供適當值。

    舉例來說,如要將 Keep-Alive 逾時時間變更為 30 秒,請新增下列程式碼區塊:

    <Properties>
      <Property name="keepalive.timeout.millis">30000</Property>
    </Properties>

    由於 keepalive.timeout.millis 屬性是以毫秒為單位,因此 30 秒的值為 30000

    以下範例說明如何在 API Proxy 的目標端點設定中,設定保持連線逾時:

    使用後端伺服器網址的目標端點設定範例

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

    使用目標伺服器的目標端點設定範例

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="target1" />
          <Server name="target2" />
        </LoadBalancer>
        <Properties>
          <Property name="keepalive.timeout.millis">30000</Property>
        </Properties>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
  4. 儲存對 API Proxy 所做的變更。

在 API Proxy 的 ServiceCallout 政策中設定連線逾時

本節說明如何在 API Proxy 的 ServiceCallout 政策中設定連線存留逾時。您可以透過 the keepalive.timeout.millis 屬性設定連線逾時時間,這個屬性代表連線逾時時間值 (以毫秒為單位)。

如要在 ServiceCallout 政策中設定連線逾時時間,請使用 keepalive.timeout.millis 屬性:

  1. 在 Edge UI 中,選取要為 ServiceCallout 政策設定新連線存續逾時值的特定 API Proxy。
  2. 選取要修改的特定ServiceCallout政策。
  3. TargetEndpoint 設定的 <HTTPTargetConnection> 元素下方,新增 keepalive.timeout.millis 屬性並提供適當值。

    舉例來說,如要將連線存留逾時時間變更為 30 秒,請新增下列程式碼區塊:

    <Properties>
      <Property name="keepalive.timeout.millis">30000</Property>
    </Properties>

    由於 keepalive.timeout.millis 屬性是以毫秒為單位,因此 30 秒的值為 30000

    以下範例說明如何在 API 代理的 ServiceCallout 政策中設定連線存留逾時:

    使用後端伺服器網址的 ServiceCallout 政策設定範例

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

    使用目標伺服器的 ServiceCallout 政策設定範例

    <ServiceCallout enabled="true" name="Service-Callout-1">
      <DisplayName>Service Callout-1</DisplayName>
      <Response>calloutResponse</Response>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="target1" />
          <Server name="target2" />
        </LoadBalancer>
        <Properties>
          <Property name="keepalive.timeout.millis">30000</Property>
        </Properties>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </ServiceCallout>
  4. 儲存對 API Proxy 所做的變更。

在訊息處理器上設定保持連線逾時

本節說明如何設定訊息處理器的連線逾時時間。您可以透過 HTTPClient.keepalive.timeout.millis 屬性設定連線存續逾時,這個屬性代表訊息處理器元件的連線存續逾時值 (以毫秒為單位)。由於這個屬性已在訊息處理器中加上註解,因此您需要使用特殊語法 conf/http.properties+HTTPClient.keepalive.timeout.millis,如「 設定目前已註解排除的權杖」一節所述,請參閱「 如何設定 Edge」。

如要在 Message Processor 上設定連線逾時時間,請按照下列步驟操作:

  1. 在訊息處理器電腦上,使用編輯器開啟下列檔案。如果不存在,請建立該檔案。
    /opt/apigee/customer/application/message-processor.properties

    舉例來說,如要使用 vi 開啟檔案,請輸入下列指令:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. 在屬性檔案中新增一行,格式如下,並將 TIME_IN_MILLISECONDS 替換為值:
    conf/http.properties+HTTPClient.keepalive.timeout.millis=TIME_IN_MILLISECONDS

    舉例來說,如要將訊息處理器的 keep-alive 逾時時間變更為 30 秒,請新增下列程式碼:

    conf/http.properties+HTTPClient.keepalive.timeout.millis=30000
  3. 儲存變更。
  4. 確認屬性檔案是由 apigee 使用者擁有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 如下所示重新啟動訊息處理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 如果您有多個訊息處理器,請在所有訊息處理器上重複上述步驟。

驗證訊息處理器的連線逾時時間

本節說明如何確認訊息處理器上的「保持運作逾時」已成功修改。

即使您使用特殊語法 conf/http.properties+HTTPClient.keepalive.timeout.millis 在訊息處理器上設定保持連線逾時,仍須確認實際屬性 HTTPClient.keepalive.timeout.millis 是否已設為新值。

  1. 在訊息處理器電腦上,搜尋 /opt/apigee/edge-message-processor/conf 目錄中的 HTTPClient.keepalive.timeout.millis 屬性,並檢查是否已設定新值,如下所示:
    grep -ri "HTTPClient.keepalive.timeout.millis" /opt/apigee/edge-message-processor/conf
    
  2. 如果訊息處理器成功設定新的保持連線逾時值,上述指令就會在 http.properties 檔案中顯示新值。

    設定保持運作逾時時間為 30 秒後,上述指令的範例結果如下:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPClient.keepalive.timeout.millis=30000

    在上述範例輸出內容中,請注意屬性 HTTPClient.keepalive.timeout.millis 已在 http.properties 中設定為新值 30000。這表示訊息處理器已成功將「保持運作」逾時設定為 30 秒。

  3. 如果資源仍顯示舊值 HTTPClient.keepalive.timeout.millis,請確認您已正確按照「在訊息處理器上設定保持連線逾時」一文中的所有步驟操作。如果遺漏任何步驟,請再次正確執行所有步驟。
  4. 如果仍無法修改連線存續逾時,請與 Google Cloud Apigee Edge 支援團隊聯絡。