反模式:保留未使用的 NodeJS API 代理

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

Apigee Edge 的一项独特且实用的功能是能够将 NodeJS 应用封装在 API 代理中。这样一来,开发者就可以使用 Edge 创建事件驱动型服务器端应用。

反模式

API 代理部署是指将 API 代理提供给系统以处理 API 请求的过程。每个部署的 API 代理都会加载到消息处理器的运行时内存中,以便为特定 API 代理处理 API 请求。因此,随着部署的 API 代理数量的增加,运行时内存用量也会增加。保留任何未使用的已部署 API 代理都可能会导致不必要地使用运行时内存。

对于 NodeJS API 代理,还有一个进一步的含义。

该平台会为每个部署的 NodeJS API 代理启动一个“Node 应用”。Node 应用类似于消息处理器 JVM 进程中的独立节点服务器实例。

实际上,对于每个部署的 NodeJS API 代理,Edge 都会启动一个节点服务器,以处理相应代理的请求。如果在多个环境中部署了相同的 NodeJS API 代理,则系统会为每个环境启动相应的 Node 应用。如果有大量已部署但未使用的 NodeJS API 代理,系统会启动多个 Node 应用。未使用的 NodeJS 代理会转换为空闲的 Node 应用,这些应用会消耗内存并影响应用进程的启动时间。

使用的代理 未使用的代理
# 代理 # 已部署的环境 已发布 # 个 nodeapps # 代理 # 已部署的环境 # 个 Node 应用已发布
10 dev、test、prod(3 个) 10x3=30 12 dev、test、prod(3 个) 12x3=36

在上图中,系统启动了 36 个未使用的 nodeapp,这会耗用系统内存,并对进程的启动时间产生不利影响。

影响

  • 内存用量较高,并对应用处理后续请求的能力产生级联影响
  • 对实际处理流量的 API 代理的可能性能影响

最佳做法

  • 取消部署所有未使用的 API 代理
  • 使用 Google Analytics 代理性能信息中心确定哪些代理未投放流量;停用不需要的代理

深入阅读