日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

為什么注入Sidecar代理后,耗時較長的請求會丟失或失敗

本文介紹注入Sidecar代理后,當Pod停止時,耗時較長的請求會丟失或失敗的問題現象、問題原因和解決方案。

問題現象

為Pod注入Sidecar代理后,當Pod停止時,存在以下兩個問題:

  • 調用該Pod的一些耗時較長的請求會丟失。

  • 使用該Pod調用其他服務可能會失敗。

問題原因

為Pod注入Sidecar代理后,業務Pod的流量會被istio-proxy代理。當Pod開始停止時,對應的Service不再轉發流量給Pod。

在Istio中,默認收到退出信號5秒后會強制停止istio-proxy,不再接收新的Inbound連接(入口流量),將會繼續處理存量的Inbound連接,Outbound連接(出口流量)不受影響,可以正常發起。如果被停止的服務提供的接口調用的耗時較長,已有的Inbound連接和Outbound連接即使沒有處理完成也會被終止。

解決方案

方案一:修改Sidecar代理終止等待時長

您可以延長Sidecar代理終止等待時長,使得Inbound和Outbound連接可以在該時長內處理完成。

  1. 登錄ASM控制臺,在左側導航欄,選擇服務網格 > 網格管理。

  2. 網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇數據面組件管理 > Sidecar代理配置

  3. Sidecar代理配置頁面,單擊命名空間頁簽。

  4. 選擇命名空間,單擊生命周期管理,選中Sidecar代理終止等待時長,輸入時間,單擊更新設置

方案二:配置Sidecar代理生命周期

如果您無法預估請求的最大等待時長,建議配置Sidecar代理生命周期的preStop腳本。使用preStop腳本判斷是否還存在請求連接,無請求連接后,將等待默認時長(5秒)再完成退出 。

  1. 登錄ASM控制臺,在左側導航欄,選擇服務網格 > 網格管理。

  2. 網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇數據面組件管理 > Sidecar代理配置。

  3. Sidecar代理配置頁面,單擊命名空間頁簽。

  4. 選擇命名空間,單擊生命周期管理,選中Sidecar代理生命周期,將以下內容輸入到文本框中,單擊更新設置。

    {
      "postStart": {
        "exec": {
          "command": [
            "pilot-agent",
            "wait"
          ]
        }
      },
      "preStop": {
        "exec": {
          "command": [
            "/bin/sh",
            "-c",
            "while [ $(netstat -plunt | grep tcp | grep -v envoy | wc -l | xargs) -ne 0 ]; do sleep 1; done"
          ]
        }
      }
    }