QPID 操作指南

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

Apigee 中的 Qpid

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

  • 数据分析
  • 创收

在这两个工作流中,消息处理器都会生成消息,这些消息会 收集到批次中并推送到 Qpid。对于数据分析,消息由 Qpid 服务器读取; 对于创收,消息由评级服务器(管理服务器的一部分)读取。 读取后,批处理的消息将取消批处理并被提取。

以下部分介绍了 Qpid 的建议内存和磁盘配置。 这些配置基于数据分析或 创收的单个消息大小为 2KB。默认批次大小为 50,因此 Qpid 中的每条消息大约为 100 KB。Apigee 允许代理修改消息 (数据分析或创收)并向其中添加其他信息。在极端情况下,这可能会显著改变 Qpid 中单个消息的大小和整体批处理消息的大小。虽然以下部分中有关内存和磁盘的一般 建议即使在这种情况下也适用, 但您可能需要对 Qpid 进行额外的调整,以确保顺利运行。

内存

Qpid 代理使用两种类型的内存:堆外内存和堆内存。Qpid 将消息存储在 堆外内存中,并使用堆内存来处理自己的内部任务、将消息直接发送到队列和交换等。在大多数情况下,Apigee 建议您为 Qpid 代理保持 3:1 的堆外内存与堆内存比率。

堆外内存中的消息会持久保存在磁盘上。此外,如果 堆外内存的总利用率超过某个阈值,Qpid 会配置为将消息溢出到磁盘。

默认情况下,Apigee 会根据节点上的可用内存 计算 Qpid 代理的堆内存和堆外内存。Apigee 的脚本对 Qpid 代理的堆内存和 堆外内存的总和设置了 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 配置,请执行以下操作:

  1. 创建或修改以下文件:
    $APIGEE_ROOT/customer/application/qpidd.properties
  2. 根据需要添加、移除或修改配置。 例如,如需将 Qpid 代理的最大堆内存更改为 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 restart