适用于 Private Cloud 4.52.01 版的 Edge 随 Qpid agent-J 8.0.6 一起提供。本页面介绍适用于私有云的 Edge(使用基于 Java 的代理)的 apigee-qpidd
组件的内存和磁盘注意事项。以下部分专门适用于 Apigee 的 Qpid 用例,并说明了如何使用 Apigee 的配置机制调整 Qpid。
Apigee 中的 Qpid
在 Apigee 中,Qpid 用于两个主要工作流:
- 分析
- 创收
在这两个工作流中,消息处理器都会生成消息,这些消息将分批收集并推送到 Qpid。对于 Analytics,消息由 Qpid 服务器读取;对于创收,这些消息由评分服务器(管理服务器的一部分)读取。读取完成后,批量处理的消息将取消批处理并注入。
建议的配置
以下部分介绍了使用 Qpid 的内存和磁盘的推荐配置。对于 Google Analytics(分析)或创收功能,这些配置基于 2KB 的单条消息。当默认批次大小为 50 时,Qpid 中的每条消息约为 100 kb。Apigee 允许代理修改消息和向消息添加其他信息(分析或创收)。在极端情况下,这可能会显著改变 Qpid 中单条消息和整个批量消息的大小。虽然下文中关于内存和磁盘的一般建议即使在此类情况下也适用,但您可能需要对 Qpid 进行其他调整以确保操作顺畅。
内存
Qpid 代理使用两种类型的内存:堆外内存和堆内存。Qpid 将消息存储在堆外内存中,并将堆内存用于自己的内部任务、将消息定向到队列和交换等。在大多数情况下,Apigee 建议您在 Qpid 代理的堆外内存与堆内存之间保持 3:1 的比率。
堆外内存中的消息会保留在磁盘上。此外,如果堆外内存的总利用率超过特定阈值,则 Qpid 会配置为将消息溢出到磁盘。
默认情况下,Apigee 根据节点上的可用内存计算 Qpid agent 的堆和堆外内存。对于 Qpid 代理的堆和堆外内存,Apigee 的脚本的软性限制为 4 GB。如果您要替换这些限制,可以使用下面的两种配置自行设置 Qpid 的堆和堆外内存值。
- 堆内存配置:
bin_run-qpidd_qpid.run.jvm.max_vm_heap=1024m
- 堆外内存的配置:
bin_run-qpidd_qpid.run.jvm.max_direct_memory_size=3072m
如需了解如何替换配置,请参阅如何更改 Qpid 配置。
如需了解详情,请参阅 内存的 Apache Qpid 参考。
磁盘
Qpid 代理的数据目录为 $APIGEE_ROOT/data/apigee-qpidd
。
Qpid 代理的日志存储在 $APIGEE_ROOT/var/log/apigee-qpidd
中。
托管数据目录的文件系统的性能对整个代理的性能至关重要。为获得最佳性能,请选择延迟时间较短且其他应用未使用的设备。
Qpid 代理会将其消息保留在数据目录中。默认情况下,代理将接受消息,直到托管数据目录的文件系统已满 80%。您可以通过在每个 Qpid 节点上替换以下示例中显示的配置来修改此阈值。
bin_run-qpidd_qpid.store.filesystem.maxUsagePercent=60
在本例中,当底层文件系统已满 60% 时,代理会拒绝新消息。
如何更改 Qpid 配置
如需更改 Qpid 配置,请执行以下操作:
- 创建或修改以下文件:
$APIGEE_ROOT/customer/application/qpidd.properties
- 根据需要添加或移除或修改配置。
例如,如需将 Qpid 代理的最大堆内存更改为 6 GB,请在文件中添加以下配置替换:
bin_run-qpidd_qpid.run.jvm.max_vm_heap=6144M
- 保存更改,并确保
apigee
用户拥有并读取文件:chown apigee:apigee $APIGEE_ROOT/customer/application/qpidd.properties
- 重启
qpidd
进程:apigee-service apigee-qpidd 重启