QPID 操作指南

适用于私有云的 Edge 版本 4.52.02 附带 Qpid Broker-J 8.0.6。本页面介绍适用于私有云的 Edge 的 apigee-qpidd 组件(具有基于 Java 的代理)的内存和磁盘注意事项。以下部分专门适用于 Apigee 的 Qpid 用例,并说明了如何使用 Apigee 的配置机制调整 Qpid。

Apigee 中的 Qpid

在 Apigee 中,Qpid 用于两个主要工作流:

  • 分析
  • 创收

在这两种工作流中,消息处理器都会生成消息,这些消息会分批收集并推送到 Qpid。对于 Google Analytics(分析),消息由 Qpid-server 读取;对于创收,消息由评分服务器(管理服务器的一部分)读取。读取后,系统会对分批的消息进行取消批处理和提取。

以下各部分介绍了使用 Qpid 时建议的内存和磁盘配置。用于分析或创收的单封邮件大小为 2 KB。如果默认批次大小为 50,Qpid 中的每条消息大约为 100 kb。Apigee 允许代理修改消息(分析或创收)并添加额外信息。在极端情况下,这可能会显著改变 Qpid 中单条消息和整体批处理消息的大小。虽然下面几部分中关于内存和磁盘的一般建议即使在此类情况下也适用,但您可能需要对 Qpid 进行其他调整以确保操作流畅。

记忆

Qpid Broker 使用两种内存:堆外内存和堆内存。Qpid 将消息存储在堆外内存中,并将堆内存用于自身的内部任务,以及将私信发送到队列和交换等。在大多数情况下,Apigee 建议您在 Qpid Broker 的堆外内存和堆内存之间保持 3:1 的比率。

堆外内存中的消息会保留在磁盘上。此外,如果堆外内存的总利用率超过特定阈值,系统会将 Qpid 配置为将消息溢出到磁盘中。

默认情况下,Apigee 根据节点上的可用内存计算 Qpid Broker 的堆内存和堆外内存。对于 Qpid Broker 的堆内存和堆外内存,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 Broker 的数据目录是 $APIGEE_ROOT/data/apigee-qpidd。Qpid Broker 的日志存储在 $APIGEE_ROOT/var/log/apigee-qpidd 中。

托管数据目录的文件系统的性能对于 Broker 的整体性能至关重要。为获得最佳性能,请选择延迟低且不会被其他应用使用的设备。

Qpid Broker 会在数据目录中保留其消息。默认情况下,Broker 将接受消息,直到托管数据目录的文件系统已满 80%。您可以通过在每个 Qpid 节点上替换以下示例中显示的配置来修改此阈值。

bin_run-qpidd_qpid.store.filesystem.maxUsagePercent=60

在此示例中,当底层文件系统已满 60% 时,Broker 会拒绝新消息。

如何更改 Qpid 配置

要更改 Qpid 配置,请执行以下操作:

  1. 创建或修改以下文件:
    $APIGEE_ROOT/customer/application/qpidd.properties
  2. 根据需要添加或移除或修改配置。 例如,如需将 Qpid Broker 的最大堆内存更改为 6 GB,请在该文件中添加以下配置替换项:
    bin_run-qpidd_qpid.run.jvm.max_vm_heap=6144M
  3. 保存更改,并确保文件归 apigee 用户所有并可供其读取:
    chown apigee:apigee $APIGEE_ROOT/customer/application/qpidd.properties
  4. 重启 qpidd 进程:
    apigee-service apigee-qpidd 重启