您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
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 代理的情况下,系统会启动多个节点应用。 未使用的 NodeJS 代理会转换为闲置的节点应用,这些应用会消耗内存并影响应用进程的启动时间。
| 已使用的代理 | 未使用的代理 | ||||
|---|---|---|---|---|---|
| 代理数量 | 已部署的环境数量 | 已启动的节点应用数量 | 代理数量 | 已部署的环境数量 | 已启动的节点应用数量 |
| 10 | 开发、测试、生产 (3) | 10x3=30 | 12 | 开发、测试、生产 (3) | 12x3=36 |
在上图中,启动了 36 个未使用的节点应用,这会占用系统内存,并对进程的启动时间产生不利影响。
影响
- 内存用量较高,并对应用处理进一步请求的能力产生连锁效应 请求
- 可能会对实际处理流量的 API 代理产生性能影响
最佳做法
- 取消部署任何未使用的 API 代理
- 使用 Analytics 代理性能信息中心确定哪些代理未处理 流量;取消部署不需要的代理