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

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

Apigee Edge 独有而实用的特性之一是能够将 NodeJS 应用封装在 API 代理中。这让开发者能够使用 Edge 创建事件驱动型服务器端应用。

反模式

API 代理的部署是使其可用于处理 API 请求的过程。每个已部署的 API 代理都会加载到消息处理器的运行时内存中,以便能够处理特定 API 代理的 API 请求。因此,运行时内存用量会随着部署的 API 代理数量的增加而增加。使任何未使用的 API 代理保留部署状态可能会导致不必要地使用运行时内存。

对于 NodeJS API 代理,还意味着一个额外的含义。

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

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

已使用的代理 未使用的代理
代理数量 已部署的环境数量 已发布 # 个节点应用 代理数量 已部署的环境数量 启动了 # 个节点应用
10 开发、测试、生产 (3) 10x3=30 12 开发、测试、生产 (3) 12x3=36

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

影响

  • 内存用量高以及对应用处理进一步请求的能力产生级联影响
  • 可能会对实际处理流量的 API 代理的性能产生影响

最佳实践

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

深入阅读