最佳化及擴充 Agent Runtime 效能

Agent Runtime 提供部署參數,可讓您最佳化及擴充代理的效能。設定這些參數,即可有效處理無法預測或流量激增的情況。

本頁說明最佳化及擴充 Agent Runtime 效能的最佳做法,涵蓋下列情境:

這些情境說明如何使用部署參數解決常見的效能瓶頸,特別是實際應用程式中無法預測、流量激增的模式。

冷啟動問題

當要求送達時,如果沒有閒置的執行個體或容器可處理,Agent Runtime 就必須啟動新的執行個體或容器,這稱為冷啟動。這會大幅增加要求的延遲時間。

舉例來說,如果將 300 個並行要求傳送至預設 min_instances=1 的代理,可能會顯示下列結果:

  • 冷啟動 (首次執行):平均延遲時間約為 4.7 秒。

  • 暖啟動 (立即第二次執行):平均延遲時間約為 0.4 秒。

超過四秒的負擔幾乎完全是因為啟動新執行個體來處理負載。

請嘗試下列方法,緩解冷啟動問題:

  • 請將 min_instances 值設得夠高,足以處理基準流量。舉例來說,將 min_instances=10 設為範例代理,可將冷啟動的平均延遲時間縮短至約 1.4 秒。如果應用程式的流量不穩定或偏高,請將 min_instances 設為可處理一般負載的值,不必從 1 開始調度資源。如需可接受的值範圍,請參閱 ReasoningEngineSpec REST 資源參考資料。

  • 使用佇列,向 Agent Runtime 傳送穩定、連續且可預測的負載。舉例來說,在採用 min_instances=10 和預設 concurrency (9) 的 Agent Development Kit (ADK) 代理上,以每分鐘 1,500 次查詢 (每秒 25 次查詢) 的速度,持續執行 60 秒的負載測試,可能會產生下列結果:

    • 平均延遲時間持續偏低,約為 1.6 秒。

穩定、持續的負載可讓服務保持暖機狀態,並達到最佳效能。

非同步 worker 使用率偏低

根據預設,container_concurrency 會設定為同步程式碼,每個 Agent Platform 執行個體一次只會處理一項要求。非同步代理 (例如以 Agent Development Kit (ADK) 為基礎的代理) 可同時處理多個 I/O 繫結要求 (例如 LLM 或工具呼叫)。

舉例來說,如果同時向 ADK 代理傳送 300 個並行要求,並使用 min_instances=10 和預設的 container_concurrency=9,可能會產生下列結果:

  • 雖然延遲時間中位數約為 4 秒,但最大延遲時間會飆升至 60 秒。這表示服務在緩慢水平擴展時,要求會大量排入佇列。

如要減少未充分利用的非同步 worker,請提高 container_concurrency,讓每個代理平台執行個體處理多個要求。每個代理程式程序可處理的並行要求數量為 container_concurrency / 9。值 9 代表每個容器中平行執行的代理程式程序數量。

舉例來說,如果同時向同一個以 ADK 為基礎的代理傳送 300 個並行要求,並使用 min_instances=10 和 container_concurrency=36,可能會產生下列結果:

  • 最大延遲時間從 60 秒縮短至約 7 秒。這表示現有執行個體能更有效地吸收流量高峰。

如果是非同步代理 (例如以 ADK 為基礎的代理),請先將 container_concurrency 設為 9 的倍數 (例如 36)。這可提升對流量高峰的反應速度,並減少水平擴展造成的延遲。

請注意,如果將 container_concurrency 值設得太高,可能會發生記憶體不足 (OOM) 錯誤。

後續步驟

指南

瞭解如何管理已部署至 Agent Platform 代管執行階段的代理。

指南

透過 Agent Platform Runtime 使用代理。

資源

瞭解 Agent Platform 的配額和限制。