反模式:保留已部署且未使用的 NodeJS API Proxy

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

Apigee Edge 的獨特實用功能之一,就是能將 NodeJS 應用程式包裝在 API Proxy 中。開發人員可使用 Edge 建立事件導向的伺服器端應用程式。

反模式

部署 API Proxy 的過程,就是讓 API Proxy 能夠處理 API 要求。每個已部署的 API Proxy 都會載入訊息處理器的執行階段記憶體,以便處理特定 API Proxy 的 API 要求。因此,部署的 API Proxy 數量越多,執行階段記憶體用量就越高。如果部署了未使用的 API Proxy,可能會導致執行階段記憶體遭到不必要的耗用。

如果是 NodeJS API Proxy,則有進一步的影響。

平台會為每個部署的 NodeJS API Proxy 啟動「Node 應用程式」。Node 應用程式類似於 Message Processor JVM 程序中的獨立節點伺服器執行個體。

實際上,對於每個部署的 NodeJS API Proxy,Edge 都會啟動一個節點伺服器,以處理對應 Proxy 的要求。如果同一個 NodeJS API Proxy 部署在多個環境中,系統會為每個環境啟動對應的節點應用程式。如果部署了許多未使用的 NodeJS API Proxy,就會啟動多個 Node 應用程式。未使用的 NodeJS Proxy 會轉譯為閒置的 Node 應用程式,這些應用程式會耗用記憶體,並影響應用程式程序的啟動時間。

使用的 Proxy 未使用的 Proxy
# 個 Proxy # 已部署的環境 已發布 # 個節點應用程式 # 個 Proxy # 已部署的環境 已啟動 # 個 Node 應用程式
10 dev、test、prod (3) 10x3=30 12 dev、test、prod (3) 12x3=36

在上圖中,系統啟動了 36 個未使用的 nodeapp,耗用系統記憶體,對程序的啟動時間造成負面影響。

影響

  • 記憶體用量偏高,對應用程式處理後續要求的能力造成連鎖效應
  • 實際提供流量的 API Proxy 可能受到的效能影響

最佳做法

  • 取消部署所有未使用的 API Proxy
  • 使用 Analytics Proxy Performance 資訊主頁,判斷哪些 Proxy 未提供流量,並取消部署不需要的 Proxy

延伸閱讀