您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档。 信息
本文档介绍如何在 Apigee Edge 的消息处理器上启用字符串去重。
字符串重复信息删除是一项 Java 功能,可帮助您节省 Java 应用中的重复字符串对象占用的内存。它通过使重复或相同的字符串值共享相同的字符数组,减少了 Java 堆内存中字符串对象的内存占用量。
Apigee Edge Message Processor 是一个基于 Java 的组件。在消息处理器中使用字符串重复信息删除功能可以减少内存用量,从而提高 API 代理的性能,尤其是在 API 代理大量使用字符串的情况下。
字符串重复信息删除功能只能与 Java 应用中的 G1 垃圾回收器 (G1GC) 搭配使用。如果要在消息处理器上启用此功能,则需要在消息处理器上启用 G1GC 或同时启用 G1GC 和字符串重复信息删除。
准备工作
- 如果您不熟悉 G1GC,请参阅 G1 垃圾回收器使用入门
- 如果您不熟悉字符串重复信息删除,请参阅 G1 垃圾回收器的字符串重复信息删除
- 如果您不熟悉如何在边缘消息处理器上启用 G1GC,请参阅 在消息处理器上启用 G1GC。
- 如果您不熟悉如何在 Private Cloud 上配置 Edge 的属性,请参阅如何配置 Edge。
在消息处理器上启用字符串重复信息删除
本部分介绍如何在边缘消息处理器上启用字符串重复信息删除功能。您可以通过消息处理器组件上的属性 useStringDeduplication
启用字符串去重。默认情况下,在消息处理器上,此属性会设为 false。如需配置消息处理器上的任何属性,请按照如何配置 Edge 中所述的语法使用令牌。
如需在消息处理器上启用字符串重复信息删除,请执行以下步骤:
找到 useStringDeduplication 属性的令牌
以下步骤介绍了如何查找 useStringDeduplication 的令牌:
-
使用以下命令在消息处理器源目录
/opt/apigee/edge-message-processor/source
中搜索useStringDeduplication
属性:grep -ri "useStringDeduplication" /opt/apigee/edge-message-processor/source
-
此命令的输出会显示消息处理器属性
useStringDeduplication
的令牌,如下所示:/opt/apigee/edge-message-processor/source/conf/system.properties:useStringDeduplication={T}conf_system_useStringDeduplication{/T}
其中,
{T}{/T}
标记之间的字符串是您可以在消息处理器的.properties
文件中设置的令牌的名称。因此,属性useStringDeduplication
的令牌如下所示:conf_system_useStringDeduplication
在消息处理器上启用字符串重复信息删除
以下步骤介绍了如何在 Apigee 消息处理器上启用字符串去重:
-
使用编辑器打开消息处理器机器上的
/opt/apigee/customer/application/message-processor.properties
文件。如果该文件尚不存在,则创建该文件。 例如:vi /opt/apigee/customer/application/message-processor.properties
-
在此文件中添加以下代码行:
conf_system_useStringDeduplication=true
- 保存您的更改。
-
请确保此属性文件归
apigee
用户所有。例如:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
使用以下命令重启消息处理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 如果您有多个消息处理器,请在所有消息处理器上重复执行这些步骤。
验证消息处理器上的字符串重复信息删除
本部分介绍如何验证是否已在消息处理器上成功启用字符串重复信息删除。
即使您使用令牌 conf_system_useStringDeduplication
在消息处理器上启用字符串重复信息删除,也需要验证实际属性 useStringDeduplication
已使用新值设置,如下所示:
-
在
/opt/apigee/edge-message-processor/conf
目录中搜索属性useStringDeduplication
,并检查其是否已使用新值进行设置。例如:grep -ri "useStringDeduplication" /opt/apigee/edge-message-processor/conf
-
如果在消息处理器上成功启用了字符串重复信息删除,则上一条命令会在
system.properties
文件中显示新值。在消息处理器上启用字符串重复信息删除后,上一条命令的示例结果如下所示:
/opt/apigee/edge-message-processor/conf/system.properties:useStringDeduplication=true
请注意,在示例输出中,属性
useStringDeduplication
已使用system.properties
中的新值true
进行设置。这表示已成功在消息处理器上启用字符串重复信息删除。 -
如果您仍然看到属性
useStringDeduplication
的旧值,请验证是否已正确执行在消息处理器上启用字符串重复信息删除中所述的所有步骤。如果您遗漏了任何步骤,请重新正确重复所有步骤。 - 如果您仍无法启用字符串重复信息删除功能,请与 Apigee 支持团队联系。