容器執行階段合約

本頁列出 Cloud Run 中容器的重要規定和行為。本頁面也會視情況說明 Cloud Run 服務、Cloud Run 工作和 Cloud Run worker 集區之間的差異。

支援的語言和映像檔

容器映像檔可以執行以您選擇的程式設計語言編寫的程式碼,並使用任何基礎映像檔,前提是必須遵守本頁列出的限制。

容器映像檔中的執行檔必須針對 64 位元 Linux 編譯。Cloud Run 專門支援 Linux x86_64 ABI 格式。

Cloud Run 接受 Docker 映像檔資訊清單 V2、結構定義 1、結構定義 2 和 OCI 映像檔格式的容器映像檔。Cloud Run 也接受 Zstd 壓縮的容器映像檔。

如要部署多架構映像檔,資訊清單清單必須包含 linux/amd64。

如果是使用 Cloud Run 部署的函式,您可以使用 Google Cloud Buildpack 發布的 Cloud Run 執行階段基本映像檔,自動接收安全性和維護更新。如要瞭解支援的執行階段,請參閱執行階段支援時程。

容器需求

將容器部署至 Cloud Run 時,必須符合下列規定:

部署至服務的容器必須監聽正確通訊埠的要求

Cloud Run 服務會啟動 Cloud Run 執行個體,處理傳入的要求。Cloud Run 執行個體一律會有一個用於監聽要求的輸入容器,以及一或多個邊車容器 (選用)。下列通訊埠設定詳細資料僅適用於 ingress 容器,不適用於 sidecar。

執行個體中的 ingress 容器必須在傳送要求的通訊埠上監聽 0.0.0.0 的要求。請注意,ingress 容器不應監聽 127.0.0.1。根據預設,要求會傳送至 8080,但您可以設定 Cloud Run,將要求傳送至您選擇的通訊埠。Cloud Run 會將 PORT 環境變數插入輸入容器。

虛擬私有雲網路連線

Cloud Run 可讓您使用直連虛擬私有雲連線至虛擬私有雲網路。

  • 如要將流量傳送至設定的虛擬私有雲網路中的私人資源 (例如資料庫或內部服務),請使用直連虛擬私有雲輸出。
  • 如要從設定的虛擬私有雲網路或子網路上的私人資源或 IP 位址接收流量,請使用直連虛擬私有雲輸入。

每項 Cloud Run 資源都支援下列直連虛擬私有雲設定:

  • 服務:僅限輸出
  • 工作:僅限輸出
  • worker 集區:輸出和輸入
  • 執行個體:輸出和輸入

使用直連虛擬私有雲時,這些 IP 位址並非靜態。 如果是 Cloud Run 執行個體,在執行個體重新啟動、停止或更新後,這些 IP 位址就無法復原。每次啟動、停止或更新執行個體時,都會取得新的 IP 位址。

為 worker 集區或 Cloud Run 執行個體使用直連虛擬私有雲輸入時:

  • 只有虛擬私有雲網路中的資源,才能連線至資源的私人 IP 位址端點。如要進一步瞭解如何取得 worker 集區或執行個體的私人 IP 位址,請參閱「使用中繼資料伺服器 (MDS) 擷取私人 IP 位址」。

  • 如果是資料庫連線或任何其他自訂 TCP 通訊協定等連線,容器必須透過 Dockerfile,在容器映像檔中公開的通訊埠上監聽 TCP 連線,或由 PORT 環境變數指定的通訊埠。

在工作執行作業中執行的容器必須在完成後結束

如果是 Cloud Run 工作,容器必須在工作成功完成時以結束代碼 0 結束,並在工作失敗時以非零結束代碼結束。

由於工作不應處理要求,因此容器不應監聽通訊埠或啟動網路伺服器。

傳輸層加密 (TLS)

容器不應直接實作任何傳輸層安全標準。Cloud Run 會終止 HTTPS 和 gRPC 的 TLS,然後將要求以 HTTP/1 或 gRPC 的形式,透過 Proxy 傳送至沒有 TLS 的容器。

如果您設定 Cloud Run 服務使用 HTTP/2 端對端,容器必須處理 HTTP/2 明文 (h2c) 格式的要求,因為 TLS 仍會由 Cloud Run 自動終止。

回應 (服務)

如果是 Cloud Run 服務,容器收到要求後,必須在要求逾時設定指定的時間內傳送回應,包括容器啟動時間。否則要求會終止,並傳回 504 錯誤。

回應快取和 Cookie

如果 Cloud Run 服務的回應包含 Set-Cookie 標頭,Cloud Run 會將 Cache-Control 標頭設為 private,這樣就不會快取回應。這可防止其他使用者擷取 Cookie。

環境變數

Cloud Run 服務和工作可使用不同的環境變數組合。

服務的環境變數

下列環境變數會自動新增至所有執行中的容器,但 PORT 除外。PORT 變數只會新增至輸入容器:

名稱 說明 範例
PORT HTTP 伺服器應監聽的通訊埠。 8080
K_SERVICE 執行中的 Cloud Run 服務名稱。 hello-world
K_REVISION 執行中的 Cloud Run 修訂版本名稱。 hello-world.1
K_CONFIGURATION 建立修訂版本的 Cloud Run 設定名稱。 hello-world

工作環境變數

Cloud Run 工作會設定下列環境變數:

名稱 說明 範例
CLOUD_RUN_JOB 執行中的 Cloud Run 工作名稱。 hello-world
CLOUD_RUN_EXECUTION 執行中的 Cloud Run 執行作業名稱。 hello-world-abc
CLOUD_RUN_TASK_INDEX 這項工作的索引。第一項工作從 0 開始,每項後續工作遞增 1,最多為工作數量上限減 1。如果將 --parallelism 設為大於 1,工作可能不會按照索引順序執行。舉例來說,工作 2 可能會在工作 1 之前開始。 0
CLOUD_RUN_TASK_ATTEMPT 這個工作的已重試次數。第一次嘗試時從 0 開始,每次重試時遞增 1,直到達到重試次數上限。 0
CLOUD_RUN_TASK_COUNT --tasks 參數中定義的工作數量。 1

worker 集區的環境變數

Cloud Run 會為 worker 集區設定下列環境變數:

名稱 說明 範例
CLOUD_RUN_WORKER_POOL 執行中 Cloud Run worker 集區的名稱。 hello-world
CLOUD_RUN_REVISION 執行中 Cloud Run worker 集區修訂版本的名稱。 hello-world.1

要求和回應標頭規定 (服務)

如果是服務,Cloud Run 會限制標頭名稱只能使用可顯示的非空白 ASCII 字元,且不得包含半形冒號。根據 IETF RFC 7230,Cloud Run 限制標頭值只能使用可顯示的 ASCII 字元、空格和水平定位符號。

檔案系統存取權

每個容器的檔案系統都可寫入,並遵循下列行為:

  • 這是記憶體內檔案系統,因此寫入時會使用執行個體的記憶體。
  • 執行個體停止時,寫入檔案系統的資料不會保留。

您無法為這個檔案系統指定大小限制,因此寫入記憶體內檔案系統時,可能會用盡分配給執行個體的所有記憶體,導致執行個體當機。如要避免這個問題,請使用有大小限制的專用記憶體內磁碟區。

執行個體生命週期

Cloud Run 工作和服務的生命週期特性不同,因此會在下列子節中分別說明。

服務

下列特性僅適用於服務。

服務資源調度

根據預設,Cloud Run 服務會自動調度資源為所需的執行個體數量,以處理所有傳入要求、事件或 CPU 使用率。如需進一步控管資源調度行為,可以選擇使用手動調度資源。

每個執行個體都會執行固定數量的容器,包括一個 ingress 容器,以及一或多個邊車容器 (選用)。

如果修訂版本未收到任何流量,則會縮減至設定的執行個體數量下限 (預設為零)。

啟動

如果是 Cloud Run 服務,執行個體必須在啟動後 4 分鐘內監聽要求,且執行個體內的所有容器都必須健康狀態良好。在這段啟動時間內,系統會為執行個體分配 CPU。您可以啟用啟動時增加 CPU,在執行個體啟動期間暫時增加 CPU 分配,以縮短啟動延遲時間。

只要輸入容器監聽設定的通訊埠,系統就會將要求傳送至該容器。

等待執行個體的要求會保留在佇列中,如下所示:

要求最多會暫停 3.5 倍於這項服務容器執行個體的平均啟動時間,或 10 秒 (以時間較長者為準)。

您可以設定啟動探測,判斷容器是否已啟動並準備好處理要求。

如果 Cloud Run 服務是由多容器執行個體組成,您可以設定容器啟動順序,指定執行個體內容器的啟動順序。

處理要求

如果是 Cloud Run 服務,只要 Cloud Run 修訂版本正在處理至少一項要求,系統就會一律將 CPU 分配給所有容器,包括執行個體中的 sidecar。

閒置

在 Cloud Run 服務中,閒置執行個體是指未處理任何要求的執行個體。

閒置執行個體中所有容器分配到的 CPU,取決於設定的計費設定。

除非因執行個體數量下限設定而必須保持閒置,否則執行個體閒置時間不會超過 15 分鐘。

關閉

如果是 Cloud Run 服務,閒置的執行個體隨時可能關閉,包括因設定執行個體數量下限而保持暖機狀態的執行個體。如果需要關閉正在處理要求的執行個體,系統會給予正在處理的要求時間完成,並將新的傳入要求轉送至其他執行個體。在特殊情況下,Cloud Run 可能會啟動關機程序,並將 SIGTERM 信號傳送至仍在處理要求的容器。

關閉執行個體前,Cloud Run 會向執行個體中的所有容器傳送 SIGTERM 信號,表示實際關閉前有 10 秒的時間,此時 Cloud Run 會傳送 SIGKILL 信號。在這段期間內,系統會為執行個體分配 CPU 並收取費用。在採用第一代執行環境的服務中,如果執行個體未擷取 SIGTERM 信號,就會立即關閉。在採用第二代執行環境的服務中,建議您在容器上安裝 SIGTERM 處理常式,以便在 Cloud Run 即將關閉執行個體時收到警告。

強制終止

如果一或多個 Cloud Run 容器超過容器記憶體總量限制,執行個體就會終止。執行個體上仍在處理的所有要求都會以 HTTP 500 錯誤結束。

工作

如果是 Cloud Run 工作,容器執行個體會持續執行,直到容器執行個體結束、達到工作逾時或容器停止運作。

結束代碼

您可以透過工作結束代碼,查看工作是否順利完成,或是否發生任何錯誤。結束代碼是數值,對應到成功完成或特定類型的錯誤。

下表列出常見的結束代碼及其定義:

結束代碼 信號 說明
0 工作順利完成。
4 SIGILL 工作嘗試存取錯誤位址的記憶體。
7 SIGBUS 工作嘗試存取分配範圍外的記憶體。
9 SIGKILL 工作因使用者操作或手動介入而強制終止。
11 SIGSEGV 工作嘗試存取未經授權的記憶體。
15 SIGTERM 如果工作超過設定的逾時時間或遭到取消,就會收到 SIGTERM 信號。應用程式伺服器會傳送 SIGTERM 信號,關閉容器執行個體。如果執行個體在收到 SIGTERM 後幾秒內未自行關閉,Cloud Run 會傳送 SIGKILL 信號,強制終止執行個體。如果執行個體正確結束並傳回 SIGTERM,可能會回報不同的錯誤代碼,否則會傳回 SIGTERM。

強制終止

如果 Cloud Run 容器執行個體超出允許的記憶體限制,就會終止。容器執行個體上仍在處理的所有要求,都會以 HTTP 500 錯誤結束。

如果工作超過工作逾時,Cloud Run 會傳送 SIGTERM 信號,表示在實際關閉前有 10 秒的時間,此時 Cloud Run 會傳送 SIGKILL 信號,關閉容器執行個體。如需詳細資訊和建議處理方式,請參閱「關機」。

在這段期間,容器執行個體會在整個生命週期內分配到 CPU,並產生費用。

worker 集區

下列特性僅適用於 worker 集區。

資源調度

Worker 集區不會自動調整資源配置。手動調整 Cloud Run worker 集區處理工作負載所需的執行個體數量。根據預設,Cloud Run 會將執行個體數量設為 1。您可以調高或調低這個數字,也可以將數字設為 0 來停用資源調度功能。工作負載必須至少有一個執行個體,才能啟動並保持運作。如果將執行個體數量下限設為 0,即使部署成功,worker 執行個體也不會啟動。

啟動

Cloud Run worker 集區執行個體會使用您在容器映像檔或 worker 集區設定中指定的進入點啟動容器。執行個體中的所有容器都必須健康狀態良好。

根據預設,Cloud Run 容器執行個體會使用一個 CPU。您可以根據需求增加或減少這個值。

您可以設定啟動探測,判斷容器是否已啟動。Cloud Run 可透過啟動探測檢查依附容器的健康狀態,確保容器通過檢查後,再啟動下一個容器。如果不使用健康狀態檢查,Cloud Run 會按照指定順序啟動容器,即使容器依附的容器無法啟動也一樣。

資源分配

worker 集區不會閒置。無論狀態為何,Cloud Run 一律會將 CPU 分配給所有容器,包括 worker 集區執行個體中的 sidecar。只要執行個體處於執行狀態,就會視為有效,並據此計費。

關閉

Cloud Run 不會根據閒置執行個體縮減 worker 集區執行個體。如果必須關閉處理工作負載的執行個體,Cloud Run 會給予處理中的工作時間完成,並將新的工作負載轉送至其他執行個體。Cloud Run 也可能啟動關機程序,並向仍在處理工作負載的容器傳送 SIGTERM 信號。

關閉執行個體前,Cloud Run 會向執行個體中的所有容器傳送 SIGTERM 信號。這個信號表示實際關機前 10 秒的開始時間,此時 Cloud Run 會傳送 SIGKILL 信號。在這段關機期間,系統會為執行個體分配 CPU 並計費。建議您在容器上安裝 SIGTERM 處理常式,以便在 Cloud Run 即將關閉執行個體時收到警告。

強制終止

如果一或多個 Cloud Run 容器超過容器記憶體總量限制,Cloud Run 就會終止執行個體。執行個體上仍在處理的所有要求都會以 HTTP 500 錯誤結束。

容器執行個體資源

容器會在 cgroup 控制器下執行,該控制器會將 CPU、RAM 和其他資源限制在為容器設定的範圍內。

以下各節說明容器執行個體的資源:

CPU

根據預設,執行個體中的每個 Cloud Run 容器都會分配到設定的 vCPU (預設為 1)。您可以分別設定每個容器的 CPU 限制。

vCPU 是以基礎硬體的抽象形式實作,可提供與不同 CPU 平台上單一硬體超執行緒大致相當的 CPU 作業時間。Cloud Run 使用的所有 CPU 平台都支援 AVX2 指令集。請注意,容器合約不含任何其他 CPU 平台詳細資料。

容器可能會同時在多個核心上執行。

Cloud Run 服務的 CPU 分配方式取決於所選計費模式。

如果選取以執行個體為依據的計費模式,系統會在執行個體生命週期內分配 CPU。如果選取以要求為依據的計費模式 (預設),系統會在執行個體處理要求時分配 CPU。詳情請參閱帳單設定。

如果您已設定執行個體數量下限,則必須使用以執行個體為依據的計費方式,以便在要求以外分配 CPU。

您可以啟用啟動時增加 CPU,在執行個體啟動期間暫時增加 CPU 分配,以縮短啟動延遲時間。

記憶體

根據預設,每個 Cloud Run 容器都會分配到設定的記憶體 (預設為 512 MiB)。您可以分別為每個容器設定記憶體限制。

記憶體的常見用途包括:

  • 載入記憶體以執行服務的程式碼
  • 寫入檔案系統
  • 容器中執行的額外程序,例如 nginx 伺服器
  • 記憶體快取系統,例如 PHP OpCache
  • 每次要求的記憶體用量
  • 共用記憶體內磁碟區

GPU

您可以設定 Cloud Run 執行個體中的容器,以便存取 GPU。如果 Cloud Run 服務是透過邊車容器部署,則部署作業中只有一個容器可以存取 GPU。如需相關規定和詳細資料,請參閱「設定 GPU」。

NVIDIA 程式庫

根據預設,所有 NVIDIA RTX PRO 6000 Blackwell GPU 和 NVIDIA L4 GPU 驅動程式庫都會掛接在 /usr/local/nvidia/lib64 下。Cloud Run 會自動將這個路徑附加至 GPU 容器的 LD_LIBRARY_PATH 環境變數 (即 ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64)。這樣動態連結器才能找到 NVIDIA 驅動程式庫。連結器會按照您在 LD_LIBRARY_PATH 環境變數中列出的順序,搜尋及解析路徑。您在這個變數中指定的任何值,都會優先於預設的 Cloud Run 驅動程式庫路徑 /usr/local/nvidia/lib64。

如要使用 13.0 以上的 CUDA 版本,最簡單的方法是依賴已安裝向前相容套件的新版 NVIDIA 基本映像檔。另一個方法是手動安裝 NVIDIA 向前相容性套件,並將其新增至 LD_LIBRARY_PATH。請參閱 NVIDIA 的相容性矩陣,判斷哪些 CUDA 版本與提供的 NVIDIA 驅動程式版本向前相容。

並行 (服務)

Cloud Run 服務的每個 Cloud Run 執行個體預設會設為多個並行,因此輸入容器可以同時接收多個要求。如要變更這項設定,請設定並行。

容器安全性限制

在 Cloud Run 中執行的容器適用下列限制。無論容器映像檔指定執行哪個 Linux 使用者,這些設定都適用。

權限縮減

在 Cloud Run 中,容器不會獲得執行個體安全性邊界的根層級功能。容器無法執行主機專屬的操作,例如:

  • 新增或移除 Linux 核心功能
  • 使用特定核心功能
  • 操控裝置
  • 存取特定硬體資源

容器中的提權功能也會停用。Cloud Run 不支援使用 sudo 和 setuid 二進位檔。

容器不具備 /dev、/proc 和 /sys 中大部分檔案和目錄的寫入權限。

Cloud Run 沒有與 Docker --privileged 模式對等的功能。

容器隔離

Cloud Run 會在使用者、網路、PID 和其他 Linux 命名空間下執行容器,將容器彼此隔離,並與執行個體本身隔離。這會限制部分網路功能,並防止根容器以「true root」的形式執行。

限制從容器內部掛接檔案系統

在 Cloud Run 中掛接檔案系統時,支援的路徑是Cloud Run 容器設定中的全代管磁碟區掛接功能。

系統不支援從使用者容器內部掛接的其他機制,也無法運作。不支援的機制包括但不限於:

  • 在容器中執行掛接程序,掛接下列任一項目:NFS、Filestore、SMB/CIFS 或任何其他網路檔案系統。
  • 呼叫會執行同等動作的系統呼叫。

此外,Cloud Run 不支援巢狀磁碟區掛接,也就是將一個磁碟區掛接在另一個磁碟區內。

不變更系統時間

不支援使用 adjtimex 和 adjtime 系統呼叫變更系統時間,也不支援任何可能允許容器執行這項操作的工具。

程序和系統呼叫限制

系統會為每個容器套用基本安全性設定檔,類似於 Docker 的 seccomp 安全性設定檔。

系統會停用 eBPF 和其他不受 Linux 命名空間保護或限制的核心層級安全防護功能,且不支援在容器內使用。

基於這個原因,其他系統呼叫或存取系統檔案 (需要 Cloud Run 執行個體的根權限) 的使用也可能受到限制。

容器沙箱

如果您使用第一代執行環境,Cloud Run 容器會使用 gVisor 容器執行階段沙箱進行沙箱處理。如 gVisor syscall 相容性參考資料所述,這個容器沙箱可能不支援某些系統呼叫。

如果使用第二代執行環境,則可享有完整的 Linux 相容性。Cloud Run 工作一律使用第二代執行環境。在第二代執行環境中,/sys/class/dmi/id/product_name 會設為 Google Compute Engine。

第二代執行環境會在獨立的程序命名空間中執行服務程式碼,因此會以容器 init 程序的形式啟動,該程序具有特殊程序語意。在第一代執行環境中,服務程式碼不會以容器 init 程序的形式執行。

檔案描述元限制

Cloud Run 第一代和第二代環境會將程序可開啟的檔案描述元數量限制為 25000。這適用於容器及其建立的任何子程序 (分支)。這是硬性限制。如果超過上限,執行個體可能會用盡檔案描述元/通訊端。

第二代環境的限制

除了上述檔案描述元限制外,第二代環境中的限制為標準 Linux 限制。

舉例來說,可開啟的檔案描述元數量限制 (如 /proc/sys/fs/file-max 所示) 預設值約為記憶體的 10%。詳情請參閱核心說明文件中的 file-max 和 file-nr。

同樣地,max_map_count (如 /proc/sys/vm/max_map_count 所示) 會設定程序可擁有的記憶體區域數量,預設值為 65535。詳情請參閱核心說明文件中的 max-map-count。

特殊權限容器和 setuid 二進位檔

Cloud Run 不支援特殊權限容器。因此,Cloud Run 不支援為非超級使用者使用 setuid 旗標的二進位檔 (例如 gcsfuse 或 sudo),且可能會因權限不足而失敗。

其中一個替代方案是以超級使用者身分執行這些二進位檔,然後在執行階段使用 su 指令切換至其他使用者。

舉例來說,在 Dockerfile 中移除 USER 指令,並在進入點指令碼中使用下列序列:

gcsfuse ...                 # Run gcsfuse as root
su myuser -c "/yourapp.sh"  # Switch to 'myuser' and run 'yourapp.sh'

執行使用者

如果使用者名稱不存在,Cloud Run 會以超級使用者 (uid=0) 身分執行容器。

相同執行個體中容器之間的通訊

Cloud Run 會在每個容器的 /etc/hosts 檔案中新增一個項目。這個項目會將服務名稱對應至 localhost IP 位址 (127.0.0.1),讓容器能使用容器名稱互相通訊。

執行個體中繼資料伺服器

Cloud Run 執行個體會公開中繼資料伺服器,您可以使用該伺服器擷取容器的詳細資料,例如專案 ID、區域、執行個體 ID 或服務帳戶。您也可以使用中繼資料伺服器為服務身分產生權杖。

如要存取中繼資料伺服器資料,請使用 HTTP 要求傳送至 http://metadata.google.internal/ 端點,並附上 Metadata-Flavor: Google 標頭:不需要用戶端程式庫。詳情請參閱「取得中繼資料」。

下表列出部分可用的中繼資料伺服器資訊:

路徑 說明
/computeMetadata/v1/project/project-id Cloud Run 資源所屬專案的 ID。
/computeMetadata/v1/project/numeric-project-id Cloud Run 資源所屬專案的編號。
/computeMetadata/v1/instance/region 這項 Cloud Run 資源的區域,會傳回 projects/PROJECT-NUMBER/regions/REGION
/computeMetadata/v1/instance/id 執行個體的專屬 ID (也可在記錄中查看)。
/computeMetadata/v1/instance/service-accounts/default/email 這項 Cloud Run 資源服務身分的電子郵件地址。
/computeMetadata/v1/instance/service-accounts/default/token 為這項 Cloud Run 資源的服務帳戶產生 OAuth2 存取權杖。Cloud Run 服務代理用於擷取權杖。這個端點會傳回含有 access_token 屬性的 JSON 回應。進一步瞭解如何擷取及使用這個存取權杖。
/computeMetadata/v1/instance/network-interfaces/0/ip 虛擬私有雲網路中 worker 集區執行個體的 IPv4 位址。
/computeMetadata/v1/instance/network-interfaces/0/ipv6 worker 集區執行個體的 IPv6 位址。請務必在雙協定子網路中建立執行個體。
/computeMetadata/v1/instance/network-interfaces/
/computeMetadata/v1/instance/network-interfaces/0/
worker 集區的網路介面目錄路徑。

Cloud Run 不會提供執行個體在Google Cloud 可用區執行的詳細資料。因此,中繼資料屬性 /computeMetadata/v1/instance/zone 一律會傳回 projects/PROJECT-NUMBER/zones/REGION-1。

檔案名稱

容器中使用的檔案名稱必須與 UTF-8 相容,也就是 UTF-8 或可安全自動轉換為 UTF-8 的格式。如果檔案名稱使用不同的編碼,請在檔案名稱與 UTF-8 相容的機器上執行 Docker 建構作業,並避免將檔案複製到含有不相容 UTF-8 名稱的容器。

如果檔案名稱與 UTF-8 不相容,容器部署作業就會失敗。請注意,檔案中使用的字元編碼沒有限制。

傳出要求逾時

如果是 Cloud Run 服務和工作,從容器傳送至虛擬私有雲的要求閒置 10 分鐘後就會逾時。如果容器向網際網路發出要求,閒置 20 分鐘後就會逾時。

傳出連線重設

從容器傳至 VPC 和網際網路的連線串流,可能會在基礎架構重新啟動或更新時終止並替換。如果應用程式會重複使用長期連線,建議將應用程式設為重新建立連線,避免重複使用失效的連線。