設定路由器的 I/O 逾時

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

本文說明如何設定 Apigee Edge 路由器上的 I/O 逾時。

路由器上的 I/O 逾時代表路由器等待接收 連線並傳送要求後,訊息處理器的回應 傳給訊息處理器路由器上的 I/O 逾時預設值為 57 秒。

路由器的 I/O 逾時時間可透過預設值 57 秒增加或縮短 相關的功能。設定方式如下:

  • 在虛擬主機中
  • 在路由器上

下列屬性可控制路由器上的 I/O 逾時:

資源名稱 位置 說明
proxy_read_timeout 虛擬主機

指定路由器收到回應 連線並傳送要求給 訊息處理器。

如果訊息處理者未在逾時期限內回應,則 路由器逾時。

根據預設,這個屬性會採用 路由器上的 conf_load_balancing_load.balancing.driver.proxy.read.timeout 屬性。 預設值為 57 秒

如果此屬性已針對特定虛擬主機修改新的逾時值,則 只會影響使用該特定虛擬主機的 API Proxy。

conf_load_balancing_load.balancing.driver.proxy.read.timeout 路由器

指定路由器收到回應 連線並傳送要求給 訊息處理器。

如果訊息處理者未在逾時期限內回應,則 路由器逾時。

這個屬性用於這個路由器上的所有虛擬主機。

此屬性的預設值為 57 秒

您可以修改這項屬性,方法如下: 請參閱下方的設定路由器的 I/O 逾時一節,或者覆寫 方法是在虛擬主機層級設定 proxy_read_timeout 屬性。

您可以使用 以下標記法:

ms: milliseconds
s:  seconds (default)
m:  minutes
h:  hours
d:  days
w:  weeks
M:  months (length of 30 days)
y:  years (length of 365 days)
conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout 路由器

指定路由器等待接收所有訊息回應的總時間 建立連線並傳送要求至每則訊息後的處理器 處理器。

如果 Edge 安裝包含多個訊息處理器, 發生錯誤時啟用重試功能。其值會是下列其中一項:

  • conf_load_balancing_load.balancing.driver.proxy.read.timeout 目前的值
  • 預設值是 57 秒

conf_load_balancing_load.balancing.driver.proxy.read.timeout 一樣 屬性,您可以指定除了預設 (秒) 以外的時間間隔。

事前準備

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

,瞭解如何調查及移除這項存取權。

設定虛擬主機的 I/O 逾時

本節說明如何在與伺服器關聯的 機構和環境您可以透過 屬性 proxy_read_timeout,代表 I/O 逾時值 (以秒為單位)。

,瞭解如何調查及移除這項存取權。

您可以透過下列任一方式設定虛擬主機:

  • Edge UI
  • Edge API

Edge UI

如要透過 Edge UI 設定虛擬主機,請按照下列步驟操作:

  1. 登入 Edge UI
  2. 前往「管理」>「管理員」虛擬主機
  3. 選取您要進行這項變更的特定環境
  4. 選取要設定新的虛擬主機 I/O 逾時值。
  5. 在「Properties」(屬性) 之下,更新「Proxy Read Timeout」值 (以秒為單位)。

    舉例來說,假設您要將逾時時間改為 120 秒,請輸入 120,如 下圖:

    Proxy 讀取逾時值設為 120

  6. 儲存變更。

Edge API

如要透過 Edge API 設定虛擬主機,請執行下列操作:

  1. 使用以下程式碼取得目前的虛擬主機設定: 取得虛擬主機 API,如下所示:

    公有雲使用者

    curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    Private Cloud 使用者

    curl -v -X GET http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    地點:

    {organization-name} 是機構名稱

    {environment-name} 是環境的名稱

    {virtualhost-name} 是虛擬主機的名稱

    虛擬主機設定範例

        {
          "hostAliases": [
            "api.myCompany,com"
          ],
          "interfaces": [],
          "listenOptions": [],
          "name": "secure",
          "port": "443",
          "retryOptions": [],
          "sSLInfo": {
            "ciphers": [],
            "clientAuthEnabled": "false",
            "enabled": "true",
            "ignoreValidationErrors": false,
            "keyAlias": "myCompanyKeyAlias",
            "keyStore": "ref://myCompanyKeystoreref",
            "protocols": []
          },
          "useBuiltInFreeTrialCert": false
        }
    
  2. 將屬性 proxy_read_timeout 新增至現有的虛擬主機設定 properties 底下的 JSON 酬載,其值以秒為單位。

    舉例來說,如要將 I/O 逾時變更為 120 秒,請新增 properties 程式碼區塊,如下所示:

    更新過的虛擬主機設定範例

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
    
  3. 將更新後的虛擬主機設定儲存至檔案。例如:virtualhost-payload.json
  4. 使用以下指令更新 virtualhost 設定: 請按照下列步驟更新虛擬主機 API:

    公有雲使用者

    curl -v -X POST Content-Type: application/json
    https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    Private Cloud 使用者

    curl -v -X POST Content-Type: application/json
    http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    地點:

    {organization-name} 是機構名稱

    {environment-name} 是環境的名稱

    {virtualhost-name} 是虛擬主機的名稱

驗證虛擬主機的 I/O 逾時

本節將說明如何驗證 I/O 逾時是否已成功修改 執行 Pod

  1. 執行 取得虛擬主機 API 以取得 virtualhost 設定,如下所示:

    公有雲使用者

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    Private Cloud 使用者

    curl -v -X GET http://<management server-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    地點:

    {organization-name} 是機構名稱

    {environment-name} 是環境的名稱

    {virtualhost-name} 是虛擬主機的名稱

  2. 確認屬性 proxy_read_timeout 已設為新的值。

    更新過的虛擬主機設定範例

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
    

    在上述範例中,請注意 proxy_read_timeout 已設為 新的值設為 120 秒

  3. 如果仍看到 proxy_read_timeout, 的舊值,請驗證 已正確遵循「在虛擬主機中設定 I/O 逾時」一文所述的所有步驟。 如果您漏掉任何步驟,請再次正確重複所有步驟。
  4. 如果仍無法修改 I/O 逾時設定,請與 Apigee Edge 支援團隊聯絡。

設定路由器的 I/O 逾時

本節說明如何在路由器上設定 I/O 逾時。I/O 逾時的值可以是 透過路由器屬性設定 conf_load_balancing_load.balancing.driver.proxy.read.timeout,代表 I/O 逾時值 (以秒為單位)

,瞭解如何調查及移除這項存取權。

如要設定路由器的 I/O 逾時,請按照下列步驟操作:

  1. 在路由器機器的編輯器中開啟下列檔案。如果尚未建立值區,請先建立值區。
    /opt/apigee/customer/application/router.properties
    

    例如,如要使用 vi,請輸入下列指令:

    vi /opt/apigee/customer/application/router.properties
    
  2. properties 檔案中加入以下格式的一行,替換成 time_in_seconds 的值:
  3. conf_load_balancing_load.balancing.driver.proxy.read.timeout=time_in_seconds
    

    舉例來說,如要將路由器上的 I/O 逾時變更為 120 秒,請新增以下這一行:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=120
    

    您也可以以分鐘為單位修改 I/O 逾時時間。例如將逾時時間改為 ,請加入以下這行程式碼:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=2m
    
    敬上
  4. 儲存變更。
  5. 確認這個屬性檔案由 apigee 使用者擁有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
    
  6. 重新啟動路由器,如下所示:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
    
  7. 如果您有多個路由器,請在所有路由器上重複上述步驟。

驗證路由器的 I/O 逾時

本節將說明如何驗證 I/O 逾時是否已成功修改 路由器

雖然使用 conf_load_balancing_load.balancing.driver.proxy.read.timeout:用來設定 I/O 逾時 在路由器上,你必須驗證 proxy_read_timeout 的實際屬性是否 已設定為新的值

  1. 在「proxy_read_timeout」中搜尋資源 /opt/nginx/conf.d 目錄,並查看該目錄是否已採用 新的值如下:
    grep -ri "proxy_read_timeout" /opt/nginx/conf.d
    
  2. 如果已成功在路由器上設定新的 I/O 逾時值,則上述指令 會顯示所有虛擬主機設定檔中的新值。

    以下是上述 grep 指令在 I/O 逾時為 120 秒:

    /opt/nginx/conf.d/0-default.conf:proxy_read_timeout 120;
    /opt/nginx/conf.d/0-edge-health.conf:proxy_read_timeout 1s;
    

    請注意,在上方的輸出範例中,請注意屬性 proxy_read_timeout 已在 0-default.conf 中設為 120 的新值 預設虛擬主機的設定檔這表示 I/O 逾時 已成功將路由器設為 120 秒。

  3. 如果仍看到 proxy_read_timeout 屬性的舊值,則 請確認您已按照 正確設定路由器的 I/O 逾時。如果 錯過任何步驟,請再次正確重複所有步驟。
  4. 如果仍無法修改 I/O 逾時設定,請與 Apigee Edge 支援團隊聯絡。

接下來呢?

瞭解如何設定訊息處理器中的 I/O 逾時